Alternativní definice formulářů¶
Alternativní definice formulářů (Custom Form Definitions) umožňují definovat více variant rozložení formuláře v rámci jedné konfigurace. Aktivní varianta se přepíná programově pomocí metody form.setFormDefinition() v Custom Script.
Konfigurace¶
Alternativní definice se konfigurují v poli CustomFormDefinitions v JSON konfiguraci formuláře. Každá definice má vlastní Name a vlastní sadu Groups.
| Vlastnost | Popis |
|---|---|
Name |
Jedinečný název definice. Slouží jako identifikátor při přepínání. [Povinné] |
Groups |
Pole skupin specifických pro tuto definici. Stejný formát jako hlavní Groups. [Povinné] |
{
"Groups": [
{
"Name": "Výchozí formulář",
"Fields": [
{ "InternalName": "Title" },
{ "InternalName": "Status" }
]
}
],
"CustomFormDefinitions": [
{
"Name": "CreateForm",
"Groups": [
{
"Name": "Nová položka",
"Fields": [
{ "InternalName": "Title", "Required": true },
{ "InternalName": "Category" },
{ "InternalName": "Priority" }
]
}
]
},
{
"Name": "DisplayForm",
"Groups": [
{
"Name": "Přehled",
"Fields": [
{ "InternalName": "Title" },
{ "InternalName": "Status" },
{ "InternalName": "Created" },
{ "InternalName": "Author" }
]
}
]
}
]
}
Přepínání definic¶
Přepnutí aktivní definice se provádí v události onFormInit pomocí metody form.setFormDefinition(name). Metoda přijímá název definice z CustomFormDefinitions.
Omezení: setFormDefinition() lze volat pouze v události onFormInit. Po dokončení inicializace metoda vyhodí chybu.
async function onFormInit() {
const { form } = tisa;
if (form.isNewForm) {
form.setFormDefinition("CreateForm");
} else if (form.isDisplayForm) {
form.setFormDefinition("DisplayForm");
}
// Pokud podmínka neodpovídá, použije se výchozí Groups
}
Typický scénář¶
Alternativní definice se nejčastěji používají, když:
- Nový formulář zobrazuje jiná pole než editační nebo zobrazovací formulář.
- Formulář úkolu potřebuje zobrazit pouze relevantní pole pro schvalovatele.
- Různé typy obsahu vyžadují různé rozložení v rámci jednoho seznamu.