Přeskočit obsah

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}`;
    });
  }
}