Ve formulářích tráví uživatelé většinu dne. A často jsou to zároveň místa, kde aplikace umírají: nekonečné rolování přes všechna pole, která kdy někdo chtěl, sekce zobrazené všem bez rozdílu, kontrola vstupu, která přijde příliš pozdě, než aby byla k něčemu. Řešením není chytristika, ale dobrý nástroj na jejich stavbu. Ten náš umožňuje sestavit každý formulář v platformě vizuálně, se strukturou a chováním, které z formuláře udělají promyšlený celek, a ne narychlo splácaninu.
Začíná se u rozvržení. Formulář lze rozdělit na záložky, seskupit do pojmenovaných sekcí a rozložit do jednoho, dvou nebo tří sloupců podle toho, jak hustý potřebuje být. Nástroj podporuje i vnořené skupiny pro případy, kdy má sekce sama smysluplné podčásti. Každé pole má popisek, volitelný zástupný text a volitelný popis zobrazený přímo u něj. Výsledkem je formulář, který se uspořádá tak, jak přirozeně plyne pozornost uživatele – ne podle toho, jak se na daném typu postupně nakupila pole.
Nejčastěji lidi překvapí podmíněná viditelnost. Pole se objeví jen tehdy, když má – DIČ, když je typ zákazníka firma, důvod zrušení, když je stav nastaven na zrušeno, preferovaný čas kontaktu, když je preferovaným kanálem telefon. Podmínky jsou výrazy nad aktuálním stavem formuláře, zapsané ve stejném jazyce vložených výrazů, jaký se používá jinde v platformě. Formulář reaguje průběžně, jak uživatel píše, a stejné podmínky se znovu ověří při uložení – server tak nikdy nepřijme vstup, který by formulář nepovolil.
Ve stejném duchu funguje i kontrola vstupu. Přímo k poli lze v nástroji připojit pravidla – minimum, maximum, délku, regulární výraz. Vyhodnocují se na straně prohlížeče kvůli okamžité zpětné vazbě a znovu na serveru, aby je neobešel podvržený nebo zastaralý klient. Součástí pravidla je i vlastní chybová hláška, takže uživatel uvidí přesně tu zprávu, kterou navrhl autor formuláře, ne obecné "neplatný vstup". Vstupní masky zabrání celým skupinám chyb ještě dřív, než vzniknou – telefonní čísla ve správném tvaru, referenční kódy v očekávaném formátu, jednoznačně zadaná data.
Další vrstvou jsou oprávnění k polím podle role. Jeden formulář může různým lidem ukázat různá pole. Manažeři vidí sloupec s platem, ostatní role záznam bez něj, nebo jen pro čtení. Obchodník vidí pole s interními poznámkami, zákaznický portál ne. Citlivá pole lze úplně skrýt, nebo zobrazit se začerněním, a jde přitom o volbu v nastavení, ne o samostatné formuláře, které je pak nutné udržovat. Jeden typ, jedna definice formuláře, mnoho rolí – a každý uživatel uvidí tu správnou podobu, aniž by se cokoli větvilo v samotné implementaci.
Další častou mezeru zaplňují výchozí hodnoty. Výchozí hodnota může být prostá konstanta, nebo živý výraz. Datum splatnosti se předvyplní na dnešek plus třicet dní. Přiřazený uživatel na aktuálně přihlášeného uživatele. Organizace na organizaci týmu toho, kdo záznam zakládá. Právě tyhle drobnosti oddělují formulář, který se dá tolerovat, od formuláře, který se používá rád – a přidat je přes nástroj je otázka chvilky. Stejný mechanismus rozlišuje režim přidávání od režimu úprav, takže se pole může objevit jen při zakládání záznamu, nebo naopak až poté, co záznam existuje.
Ještě jeden drobný, ale příjemný detail: vodorovné rozvržení umístí popisky vedle vstupních polí, ne nad ně, což se hodí na hutné kancelářské obrazovky. A protože každý formulář vychází z typu v objektovém modelu, jakákoli změna vlastnosti – nová volba, přísnější kontrola, jiný zobrazovací prvek – se do formuláře promítne sama. Pole popíšete jednou a formulář zůstane věrný tomu, čím to pole doopravdy je.
Když vestavěný nástroj nestačí – když má formulář vypadat jako hotová stránka s obrázky, souvisejícími seznamy, vlastními sekcemi nebo firemním vzhledem – převezme štafetu stránkový nástroj Canvas a obojí spolu hladce spolupracuje. Většina formulářů ale tak daleko zajít nepotřebuje. Dobře postavený formulář, poskládaný vizuálně pomocí výše popsaných nástrojů, bývá ten, který nejlépe stárne a vyžaduje nejméně údržby. Právě tady se potkává knihovna vlastností s jazykem výrazů – a čas vložený do datového modelu se začíná uživatelům vracet.