TreeINFO-For-M365 documentation
    Preparing search index...

    Migrace skriptu formuláře

    • OnFormInit
      1. Nastavení specifické formulářové definice
      2. Provedení asynchronních dotazů před načtením formuláře
      3. Zpracování akci formuláře
    • OnFormInitComplete
      • Podmínky
      • Práce s objektem pole:
        • výchozí hodnota
        • editovatelnost
        • povinnost vyplnění
        • navázání události při změně pole
    function TiSaForm_Customize(cfg) {
    var _isUserInGroup = false;

    //událost před inicializaci formuláře
    this.OnFormInit = function(form) {

    // nastavení formulářové definice dle názvu seznamu
    var listName = TiSa.Forms.CurrentForm.GetListName();
    if (listName == "ISOValidDocuments") {
    form.SetFormDefinition("Valid");
    }

    // nastavení formulářové definice dle členství ve skupině (asynchronní)
    form.SetFormDefinitionAsync();
    form.IsUserInSPGroup("SP-TEST", function(result)){
    if (result){
    _isUserInGroup = result;
    }
    form.SetFormDefinitionAsyncComplete("Valid");
    }

    // navázání události pro provedení akce (např. po kliku na tlačítko v ribbon)
    form.OnAction("start", function(completeCallBack, ctx, actionParameter) {
    WFEngine.Manager.StartWorkflowOnItem("StartWorkflowName", form.ItemId, form.ListId, function(result){
    // po dokončení async operace je nutné volat completeCallBack, nebo provést redirect
    completeCallBack();
    });
    });
    };

    // událost po inicializaci formuláře
    this.OnFormInitComplete = function(form) {

    // zízkání objektu pole (varianta 1)
    var frmCtx = form.FormContext;
    var ctMyField = frmCtx.FindFieldControl("MyField");

    // zízkání objektu pole (varianta 2)
    var ctMyField = form.FieldsByName.MyField;

    // typ formuláře
    if (form.IsNewForm ||
    form.IsEditForm ||
    form.IsEditableForm ||
    form.IsDisplayForm ||
    form.IsTaskForm){
    // ...
    }

    // získání html input pole
    var ctMyFieldInput = ctMyField.GetInput();

    // získání hodnoty uložené pole
    var originalFieldValue = form.FormData.MyField;

    // získání a nastavení hodnoty pole
    var ctMyFieldValue = ctMyField.GetValue();
    ctMyField.SetValue("any value");

    // nastavení příznaků pole (readonly, required, hidden)
    ctMyField.SetReadOnly(false);
    ctMyField.SetRequired(true);
    ctMyField.SetVisible(true);

    // navázání události na změnu pole (varianta 1)
    ctMyField.OnChange(function(){
    if (this.GetValue() === "current"){
    form.FieldsByName.MyFieldUser.SetValue(_spPageContextInfo.userId);
    }
    });

    // navázání události na změnu pole (varianta 2)
    var fnChangeMyField = function(){
    if (this.GetValue() === "current"){
    form.FieldsByName.MyFieldUser.SetValue(_spPageContextInfo.userId);
    }
    };
    ctMyField.OnChange(fnChangeMyField);
    ctMyField2.OnChange(fnChangeMyField);
    ctMyField3.OnChange(fnChangeMyField);

    // nastavení celého formuláře pouze pro čtení
    form.SetReadOnly(true);

    };

    }

    nový zápis

    1. již se neuvádí obalovací funkce function 'TiSaForm_Customize'
    2. události jsou definované jako funkce onFormInit, onFormInitComplete
    //událost před inicializaci formuláře
    async function onFormInit() {

    // nastavení formulářové definice dle názvu seznamu
    const listName = TiSa.Forms.CurrentForm.GetListName();
    if (listName == "ISOValidDocuments") {
    form.SetFormDefinition("Valid");
    }

    // nastavení formulářové definice dle členství ve skupině (asynchronní)
    form.SetFormDefinitionAsync();
    form.IsUserInSPGroup("SP-TEST", function(result)){
    if (result){
    _isUserInGroup = result;
    }
    form.SetFormDefinitionAsyncComplete("Valid");
    }

    // navázání události pro provedení akce (např. po kliku na tlačítko v ribbon)
    // nebude potřeba
    }

    // událost po inicializaci formuláře
    function onFormInitComplete(){

    // zízkání objektu pole (varianta 1)
    const {MyField} = tisa.form.field;

    // zízkání objektu pole (varianta 2)
    const ctMyField = tisa.form.field.MyField;


    // typ formuláře
    if (form.isNewForm ||
    form.isEditForm ||
    form.isEditableForm ||
    form.isDisplayForm ||
    form.isTaskForm){
    // ...
    }

    // získání html input pole (deprecated)

    // získání hodnoty uložené pole
    var originalFieldValue = MyField.originalValue;

    // získání a nastavení hodnoty pole
    var ctMyFieldValue = MyField.value;
    MyField.value = "any value";

    // nastavení příznaků pole (readonly, required, hidden)
    MyField.readOnly = false;
    MyField.required = true;
    MyField.hidden = true;

    // navázání události na změnu pole (varianta 1)
    MyField.OnChange((newValue) => {
    if (newValue === "current"){
    form.FieldsByName.MyFieldUser.SetValue(_spPageContextInfo.userId);
    }
    });

    // navázání události na změnu pole (varianta 2)
    var fnChangeMyField = function(){
    if (this.GetValue() === "current"){
    form.FieldsByName.MyFieldUser.SetValue(_spPageContextInfo.userId);
    }
    };
    ctMyField.OnChange(fnChangeMyField);
    ctMyField2.OnChange(fnChangeMyField);
    ctMyField3.OnChange(fnChangeMyField);

    // nastavení celého formuláře pouze pro čtení
    form.SetReadOnly(true);

    };

    // událost od tlačítka
    async function btnStart() {
    await tisa.form.submitForm(true); // disable redir
    await tisa.workflow.startWorkflowOnItem("StartWorkflowName");
    tisa.form.closeForm();
    }