Field API¶
Objekt pole (přístupný přes tisa.form.field.InternalName) poskytuje API pro práci s jednotlivými poli formuláře — čtení a nastavení hodnot, změnu vlastností zobrazení a reakci na změny hodnot.
Přístup k poli¶
const { form } = tisa;
const { Title, Status, Amount } = form.field;
// Nebo přímo
const titleField = form.field.Title;
Vlastnosti¶
value¶
Aktuální hodnota pole. Při zápisu se vyvolá událost onChange.
const { myField } = form.field;
// Čtení hodnoty
console.log(myField.value);
// Zápis hodnoty
myField.value = "Nová hodnota";
readOnly¶
Nastaví pole do režimu pouze pro čtení. Pole se zobrazí, ale uživatel nemůže měnit jeho hodnotu. Hodnotu lze stále měnit programově přes value nebo setValue().
myField.readOnly = true;
hidden¶
Skryje pole na formuláři. Skryté pole není viditelné, ale jeho hodnota zůstává přístupná přes API.
myField.hidden = true;
required¶
Nastaví pole jako povinné. Formulář nelze uložit, dokud povinné pole nemá hodnotu.
myField.required = true;
title¶
Zobrazovaný název pole v hlavičce. Pokud je nastaven, přepíše výchozí název ze SharePointu.
myField.title = "Vlastní název pole";
description¶
Popis pole zobrazený v hlavičce. Pokud je nastaven, přepíše výchozí popis ze SharePointu.
myField.description = "Vyplňte identifikační číslo dodavatele.";
originalValue¶
Původní hodnota pole před jakýmikoli změnami. Tato hodnota se neaktualizuje při změně pole — slouží k porovnání s aktuální hodnotou. Vlastnost je pouze pro čtení.
if (myField.value !== myField.originalValue) {
console.log("Pole bylo změněno.");
}
typeAsString¶
Typ pole jako řetězec. Vlastnost je pouze pro čtení.
Standardní typy: Text, Note, Number, Integer, Choice, Boolean, Currency, URL, User, UserMulti, Computed, Counter, File.
Vlastní typy: AdvancedChoice, AdvancedTable, Attachment, CountedColumn, ExternalLookup, Rating, IsdsBox, TemplateColumn.
console.log(myField.typeAsString); // "Text"
internalName¶
Interní název pole. Vlastnost je pouze pro čtení.
console.log(myField.internalName); // "s_supplierId"
Metody¶
onChange(callback)¶
Zaregistruje callback funkci, která se zavolá při každé změně hodnoty pole. Callback přijímá novou hodnotu a objekt s původní hodnotou.
const { myField1, myField2 } = form.field;
myField1.onChange((value, { oldValue }) => {
console.log(`Změna: ${oldValue} -> ${value}`);
myField2.value = value;
});
setValue(value, disableTriggerOnChange)¶
Nastaví hodnotu pole a počká na vyhodnocení a vykreslení v UI. Na rozdíl od přímého zápisu do value je tato metoda asynchronní (async) — doporučuje se volat s await.
Volitelný parametr disableTriggerOnChange (typ boolean, výchozí false) potlačí vyvolání události onChange.
// Nastavení s vyvoláním onChange
await myField.setValue("Nová hodnota");
// Nastavení bez vyvolání onChange
await myField.setValue("Tichá změna", true);
Příklady¶
Příklad: Podmíněné zobrazení polí¶
async function onFormInit() {
const { form } = tisa;
const { DocumentType, ExternalId, InternalCode } = form.field;
DocumentType.onChange((value) => {
if (value === "External") {
ExternalId.hidden = false;
ExternalId.required = true;
InternalCode.hidden = true;
} else {
ExternalId.hidden = true;
ExternalId.required = false;
InternalCode.hidden = false;
}
});
}
Příklad: Kopírování hodnot mezi poli¶
async function onFormInit() {
const { form } = tisa;
if (form.isNewForm) {
const { SupplierName, Title } = form.field;
SupplierName.onChange((value) => {
Title.value = `Faktura - ${value}`;
});
}
}