Uživatelská dokumentace - FormTools | Software project

Transkript

Uživatelská dokumentace - FormTools | Software project
Form Tools
Uživatelská dokumentace
Jan Bulánek
Zbyněk Falt
Lukáš Ježek
Jaroslav Keznikl
Form Tools: Uživatelská dokumentace
Jan Bulánek, Zbyněk Falt, Lukáš Ježek a Jaroslav Keznikl
Obsah
1. Úvod ..................................................................................................................................... 1
1.1. Co Form Tools dělají ................................................................................................... 1
1.2. Proces vývoje formuláře .............................................................................................. 1
2. Instalace ................................................................................................................................ 4
2.1. Systémové požadavky ................................................................................................. 4
2.2. MS Windows ............................................................................................................... 4
2.3. Linux a další UNIXové systémy .................................................................................... 5
2.3.1. Potřebné knihovny ............................................................................................ 5
2.3.2. Kompilace a instalace ....................................................................................... 5
3. Návrhář formulářů .................................................................................................................. 7
3.1. Vzhled hlavního okna .................................................................................................. 7
3.2. Tutoriál ........................................................................................................................ 7
3.2.1. Vytvoření formuláře ........................................................................................... 8
3.2.2. Tvorba formulářových polí ............................................................................... 11
3.2.3. Elektronický formulář ....................................................................................... 14
3.2.4. Úložiště dat .................................................................................................... 16
3.2.5. Export formuláře pro vyplňování ...................................................................... 18
3.2.6. Kam dále? ...................................................................................................... 19
3.3. Pokročilá tvorba formuláře ......................................................................................... 19
3.3.1. Vzhled formuláře na papíře ............................................................................. 19
3.3.2. JavaScript editor ............................................................................................. 20
3.3.3. Datové typy položek ........................................................................................ 21
3.3.4. Povinné položky ............................................................................................. 22
3.3.5. Ladění skriptů ................................................................................................. 22
3.3.6. Formátování výstupů ....................................................................................... 23
3.3.7. Vypočtené (nevstupní) položky ........................................................................ 24
3.3.8. Výběry z více možností ................................................................................... 25
3.3.9. Statické oblasti ............................................................................................... 27
3.3.10. Knihovní funkce ............................................................................................ 27
3.3.11. Uživatelské fuknce ........................................................................................ 27
3.3.12. Organizace položek do skupin ....................................................................... 28
3.3.13. Rozložení elektronického formuláře ................................................................ 28
3.3.14. Podpora ukládání dat v databázi .................................................................... 29
3.3.15. Formát dat v úložišti a elektronickém formuláři ................................................ 31
3.4. Další činnosti s formulářem ........................................................................................ 31
3.4.1. Nastavení dokumentu ..................................................................................... 32
3.4.2. Doplnění detekovaných oblastí ........................................................................ 32
3.4.3. Kalibrace pozadí stránky ................................................................................. 33
3.4.4. Znovuprovedení celé detekce .......................................................................... 35
3.4.5. Převod všech detekovaných oblastí na položky ................................................ 35
3.5. Manuál ...................................................................................................................... 35
3.5.1. Položka formuláře ........................................................................................... 36
3.5.2. Oblast tisku .................................................................................................... 38
3.5.3. Vyhodnocování programů položek formuláře ..................................................... 42
3.5.4. Formátovací vzory .......................................................................................... 43
3.5.5. Seznam knihovních funkcí ............................................................................... 47
4. Vyplňovač formulářů ............................................................................................................. 49
4.1. Otevření projektu ve Vyplňovači formulářů .................................................................. 49
4.2. Vyplňování dat ........................................................................................................... 49
4.3. Náhled na tištěný formulář ......................................................................................... 50
4.4. Tisk dat ..................................................................................................................... 51
4.4.1. Pojmenování vytvořených souborů při tisku ...................................................... 53
5. Integrace s PHP ................................................................................................................... 54
6. Detektor oblastí a rotace ....................................................................................................... 55
6.1. Načtení obrázku ........................................................................................................ 55
iii
Form Tools
6.2. Nastavení detekce hran .............................................................................................
6.3. Narovnání obrázku ....................................................................................................
6.4. Oříznutí obrázku ........................................................................................................
6.5. Kalibrace ..................................................................................................................
6.6. Nastavení detekce obdélníků ....................................................................................
6.7. Tečkované čáry .........................................................................................................
6.8. Další nastavení .........................................................................................................
6.9. Detekce a ukončení ...................................................................................................
6.10. Ostatní ....................................................................................................................
7. Závěr ...................................................................................................................................
iv
55
57
57
58
58
59
59
59
59
61
Seznam obrázků
1.1. Vývoj formuláře ................................................................................................................... 1
1.2. Návrhář formulářů ............................................................................................................... 2
1.3. Vyplňovač formulářů ............................................................................................................ 2
1.4. Vyexportovaný formulář do HTML ........................................................................................ 3
2.1. Instalační okno .................................................................................................................... 4
2.2. Výpis souborů v instalačním adresáři .................................................................................... 5
3.1. Formulář potvrzení o studiu .................................................................................................. 8
3.2. Dialog pro přidání stránky a detekci oblastí ........................................................................... 9
3.3. Oříznutí obrázku formuláře ................................................................................................. 10
3.4. OCR s vydetekovanými oblastmi ........................................................................................ 11
3.5. Formulář potvrzení o studiu po vytvoření 3 položek ............................................................. 12
3.6. Změna šířky oblasti ........................................................................................................... 13
3.7. Formulář potvrzení o studiu kompletně vytvořený ................................................................ 14
3.8. Návrh elektronického formuláře .......................................................................................... 15
3.9. Automaticky vytvořený elektronický formulář ........................................................................ 16
3.10. Přidání zdroje dat ............................................................................................................ 17
3.11. Nastavení CSV úložiště formuláře ..................................................................................... 17
3.12. Dialog pro export formuláře pro Vyplňovač formulářů ......................................................... 18
3.13. Výběr datového úložiště při exportu formuláře pro Vyplňovač formulářů ............................... 19
3.14. Otevření editoru pro JavaScript ........................................................................................ 20
3.15. JavaScript editor se zvýrazňováním syntaxe ...................................................................... 20
3.16. Nápověda pro automatické dokončení .............................................................................. 21
3.17. Dialog pro ladění skriptů .................................................................................................. 23
3.18. Návrhář formátovacích vzorů ............................................................................................ 24
3.19. Náhled na vzorová data vyplněná v potvrzení o studiu ....................................................... 25
3.20. Přesun oblastí do jiné položky .......................................................................................... 26
3.21. Uspořádání polí v tabulce pro návrh elektronického formuláře ............................................. 29
3.22. Nastavení databázového úložiště formuláře ....................................................................... 30
3.23. Export projektu s databázovým úložištěm .......................................................................... 31
3.24. Nastavení formátu ukládaných dat .................................................................................... 31
3.25. Nastavení tisku formulářů ................................................................................................. 32
3.26. Náhled na vzorová data vyplněná v potvrzení o studiu ....................................................... 33
3.27. Nástroj kalibrace velikosti a pozice pozadí stránky ............................................................. 34
3.28. Dialog pro převod detekovaných oblastí na položky formuláře ............................................ 35
3.29. Společná nastavení položky formuláře. ............................................................................. 36
3.30. Nastavení vstupní položky ................................................................................................ 37
3.31. Nastavení počítané položky .............................................................................................. 38
3.32. Společná nastavení tiskových oblastí ................................................................................ 38
3.33. Nastavení oblasti typu text ............................................................................................... 39
3.34. Nastavení oblsti typu zaškrtávání ...................................................................................... 41
4.1. Prázdný formulář potvrzení o studiu ve Vyplňovači formulářů ................................................ 49
4.2. Náhled na vzorová data vyplněná v potvrzení o studiu ......................................................... 51
4.3. Nastavení tisku formulářů ................................................................................................... 52
4.4. Výpis vytištěných souborů .................................................................................................. 53
6.1. Nastavení detekce hran ..................................................................................................... 55
6.2. Správně nastavený práh .................................................................................................... 56
6.3. Příliš nízký práh ................................................................................................................ 56
6.4. Příliš vysoký práh .............................................................................................................. 57
6.5. Menu pro rotaci ................................................................................................................. 57
6.6. Okno pro potvrzení oříznutí ................................................................................................ 57
6.7. Ořezávací mód .................................................................................................................. 58
6.8. Menu pro nastavení detekce obdélníků ............................................................................... 58
6.9. Menu pro nastavení tečkovaných čar .................................................................................. 59
6.10. Menu pro další nastavení ................................................................................................. 59
6.11. Menu pro detekci a ukončení ............................................................................................ 59
v
Form Tools
6.12. Dialog pro nastavení pravítka ........................................................................................... 60
vi
Kapitola 1. Úvod
Form Tools jeho program, který umožňuje převést papírový formulář do elektronické podoby pro jeho
snadnější vyplňování, případně dávkové zpracování.
1.1. Co Form Tools dělají
Program poskytuje prostředky, které se snaží tento převod maximálně ulehčit. Například tím, že je možné automaticky detekovat oblasti, které se mají vyplňovat, tyto oblasti je pak možné automaticky převést na samotné položky elektronického formuláře a naprogramovat jim chování tak, aby uživatel, který
elektronickou podobu formuláře bude používat, měl při vyplňování maximální pohodlí.
Dále je možné nechat automaticky vytvořit rozvržení elektronického formuláře pro vyplňování. Toto rozvržení se snaží zachytit podobu papírové předlohy. Pro hotový formulář je možné určit datové úložiště,
do kterého se vyplněná data budou ukládat. Hotový formulář je pak možné použít ve Vyplňovači formulářů, který je součástí balíku Form Tools, používat ve webovém prostředí, případně ve vlastní aplikaci.
1.2. Proces vývoje formuláře
Typický postup vývoje formuláře je zobrazen v diagramu 1.1 – „Vývoj formuláře“.
Obrázek 1.1. Vývoj formuláře
Samotný vývoj formuláře se provádí v aplikaci Návrhář formulářů (3 – „Návrhář formulářů“). Zde lze
formulář naskenovat, zdetekovat oblasti, tyto oblasti převést na položky formuláře. Zároveň je možné
do formuláře jednoduše přidávat položky jejichž hodnota závisí na ostatních (pomocí skriptů podobných
1
JavaScriptu ). Dále je nutné ve stejné aplikaci navrhnout, jak bude formulář vypadat v elektronické
podobě a jak budou ukládána získaná data (do CSV souboru nebo databáze). Poté můžete formulář
vyexportovat a tím umožnit jeho vyplňování.
1
Používaný skriptovací jazyk ECMAScript je podmnožinou webového skriptovacího jazyka JavaScript. Má stejnou syntaxi, základní odlišností je to, že v ECMAScriptu nejsou definované objekty pro práci s webovou stránkou (document, window a další).
My v tomto dokumentu budeme používat název JavaScript.
1
Úvod
Obrázek 1.2. Návrhář formulářů
Vyexportovaný formulář lze vyplňovat a pracovat s dříve uloženými daty v aplikaci Vyplňovač formulářů
(4 – „Vyplňovač formulářů“). Data lze editovat jak v navrženém elektronickém formuláři, tak v tabulce
(vypadající podobně jako Tabulkový kalkulátor). Po vytvoření (popřípadě načtení dat) je možné zobrazit
jejich náhled na papíře.
Obrázek 1.3. Vyplňovač formulářů
Formulář lze také exportovat pro jeho vyplňování na HTML stránce. Všechny skripty jsou přenesené do
HTML stránky, takže uživatelé webu nepřichází o komfort při vyplňování formuláře. Údaje vyplněné ve
formuláři jsou předzpracované pomocí PHP skriptů na serveru a připraveny k uložení do úložiště. Ze
stejného úložiště je možné načíst data do Vyplňovače formulářů a ty poté vytisknout.
2
Úvod
Obrázek 1.4. Vyexportovaný formulář do HTML
Vytvořený formuláře je také možné používat ve vlastní aplikaci. K tomu slouží tzv. Form Tools API,
které poskytuje funkce, pro načtení souboru, zobrazení dialogu pro vyplnění i pro tisk formuláře. Bližší
informace o této možnosti je možné najít v programátorské části dokumentace.
3
Kapitola 2. Instalace
2.1. Systémové požadavky
Aplikace z balíku Form Tools by měly jít spustit na běžném stolním počítači. Pro provádění náročnějších
akcí (detekce oblastí na velkých obrázcích) doporučujeme minimálně 2GB operační paměti a procesor
o taktu 2GHz.
Form Tools jsou primárně vytvořeny pro operační systém MS Windows, pro který jsou taktéž dostupné
ve formě binárního instalačního balíku. Dále by aplikace měla běžet na běžných distribucích operačního
systému Linux, pro který je balík distribuován ve formě zdrojových kódů a kompilačních skriptů.
2.2. MS Windows
Pro operační systém Windows je připraven instalační balík, který celou sadu nástrojů včetně potřebných
knihoven nainstaluje do uživatelem zvoleného adresáře, asociuje formulářové soubory s odpovídajícími
aplikacemi(*.ftd s Návrhářem formulářů a *.fts s Vyplňovačem formulářů) a přidá ikony do Start
menu a na plochu.
Obrázek 2.1. Instalační okno
Po úspěšném dokončení instalace se ve zvolené složce nachází spustitelné soubory aplikací, její dokumentace, ukázkové soubory a další soubory důležité pro běh aplikace, viz 2.2 – „Výpis souborů v instalačním adresáři“.
4
Instalace
Obrázek 2.2. Výpis souborů v instalačním adresáři
FormEditor.exe je hlavní aplikací balíku, slouží k vytváření formulářů, uživatelský manuál k ní se nachází
dále v textu v kapitole 3 – „Návrhář formulářů“. Program Filler.exe, 4 – „Vyplňovač formulářů“, umožňuje
vytvořené formuláře vyplňovat, spravovat vyplněná data a tisknout je. Složka doc obsahuje dokumentaci k programu a ve složce sample jsou umístěny hotové ukázkové příklady, se které budeme v této
dokumentaci vytvářet.
2.3. Linux a další UNIXové systémy
Pro operační systémy UNIXového jsou k dispozici zdrojové kódy a sada skriptů pro jejich kompilaci
a instalaci.
2.3.1. Potřebné knihovny
Pro úspěšnou kompilaci potřebujete knihovnu Qt ve verzi 4.5 a kompilátor C++, například g++. Dále je
potřeba mít nainstalovanou knihovnu SANE http://www.sane-project.org/, pro práci se skenerem.
2.3.2. Kompilace a instalace
Pokud máte všechny 2.3.1 – „Potřebné knihovny“, můžete rozbalit balík form tools.
$ tar xvzf form-tools.tar.gz
Přejít do adresáře formtools.
$ cd formtools
Nakonfigurovat systém pro kompilaci.
5
Instalace
$ ./configure
Přeložit zdrojové kódy (tento krok bude trvat cca 15 minut).
$ make
A nainstalovat přeloženou aplikaci do zvoleného cílového adresáře.
$ make install [args]
Při spuštění příkazu make install je možné ovlinit, kam se výsledná aplikace nainstaluje. Parametr
destdir určuje, kam se nainstalují všechny potřebné soubory — knihovny, spustitelné soubory, soubory s překlady atd. Výchozí hodnota je /opt, takže program se nainstaluje do složky /opt/formtools. Parametr bindir pak určuje, do jaké složky se nainstalují odkazy na binární soubory. Výchozí
hodnotou je složka /usr/bin.
Spuštění programu
Po nainstalování se v adresáři bindir vytvoří dva odkazy na soubory fteditor a ftfiller. První
soubor spouští návrhář formulářů a druhý jejich vyplňovač. Pokud je cesta do složky bindir v proměnné PATH, je tedy možné zadat přímo
$ fteditor [-f filename [-f filename [...]]]
resp.
$ ftfiller [-f filename]
pro jejich spuštění. Oba příkazy je možné doplnit o parametr ve tvaru -f filename, což způsobí, že
ihned po spuštění bude otevřen zadaný soubor.
6
Kapitola 3. Návrhář formulářů
Návrhář je hlavní aplikací Form Tools. Slouží k vytváření formulářů, jejich skriptování a exportu pro
umožnění pozdějšího vyplnění. V aplikaci je možné mít otevřeno více formulářů najednou, mezi nimi
lze přepínat v menu Okno.
Tip
Celý tento návod je psán pro českou lokalizaci aplikace, pokud vidíte texty na obrazovce anglicky, tak si změňte jazyk v menu Settings → Language → Čeština. Změna jazyka se projeví
až při příštím spuštění aplikace.
3.1. Vzhled hlavního okna
Hlavní okno aplikace je rozdělené na tři hlavní části:
Menu a nástrojová lišta obsahují všechny podporované akce s celými formuláři (otevírání, ukládání)
a důležité akce pro práci s jednotlivými formuláři (přidávání stránek, úprava vlastností, atd.). Na nástrojové liště jsou umístěny nejčastěji používané akce. Všechny akce v menu a v liště vždy pracují s aktuálním formulářem, popřípadě s jeho aktivní stránkou.
Editor formuláře obsahuje záložky s jednotlivými designéry formuláře. V prvním z nich, Papírový formulář umožňuje tvorbu vzhledu formuláře na papíru (jak se později bude tisknout). Další záložky slouží
k editaci vzhledu formuláře v aplikacích sloužících pro jeho vyplňování a pro nastavení úložišť zadaných
dat.
Panely nástrojů a nastavení zobrazují informace o aktuálním formuláři a mění svůj obsah podle vybrané
záložky v něm.
Tip
Panely nástrojů jsou v počátečním rozvržení aplikace umístěné po jejích stranách, je však možné je libovolně přesouvat a měnit jejich velikost. Rozložení panelů a velikost hlavního okna
aplikace se ukládá při každém jejím ukončení.
3.2. Tutoriál
Práci s aplikací budeme demonstrovat na základě kompletního postupu tvorby formuláře, od jeho naskenování, přes detekci oblastí, vytváření položek formulářů, tvorbu návrhu elektronického formuláře,
definici úložiště až po jeho export pro vyplnění. Poté budeme vytvořený formulář vylepšovat tak, aby
se s ním lépe pracovalo uživatelům, kteří jej budou vyplňovat. V tuto chvíli přijde na řadu skriptování
v jazyce JavaScript
1
V tutoriálu budeme digitalizovat formulář pro Potvrzení o studiu , který uzpůsobíme pro potřeby jedné
vysoké školy (některá políčka předvyplníme). Základní formulář, který budeme používat, zobrazuje 3.1
– „Formulář potvrzení o studiu“.
1
Hotový formulář je uložen v instalačním adresáři aplikace v souboru sample/potvrzeni_simple.ftd. Pokud si nebudete
čímkoli jistí, můžete tento soubor otevřít v Návrháři formulářů a podívat se, jak je co udělané.
7
Návrhář formulářů
Obrázek 3.1. Formulář potvrzení o studiu
Formulář má velikost A5 na šířku, v tutoriálu budeme pracovat se stránkou velikosti A4, kde formulář
umístíme navrch.
3.2.1. Vytvoření formuláře
V aplikaci vytvoříme nový formulář pomocí volby
Nový formulář v menu Soubor. To nám vytvořilo
prázdný nepojmenovaný formulář s jednou prázdnou stránkou standardní velikosti (A4).
Důležité
V průběhu práce s Návrhářem formulářů je vhodné, stejně jako v každé jiné aplikaci, si rozdělanou práci pravidelně ukládat. Proto v tuto chvíli, prosím, klikněte do menu, nebo na nástrojovou lištu, na Soubor → Uložit a zvolte soubor pro uložení vytvářeného formuláře. Form Tools
Dokumenty používají příponu *.ftd. Pro rychlejší přístup k uložení formuláře můžete použít
klávesovou zkratku CTRL+S.
Nyní pomocí volby Formulář → Přidat stránku a provést detekci otevřeme dialog pro přidání nové stránky.
V dialogu pro detekci políček na formuláři je v hlavní části náhled na přidávaný obrázek, okolo jsou
umístěna nastavení detekce polí, viz 3.2 – „Dialog pro přidání stránky a detekci oblastí“.
8
Návrhář formulářů
Obrázek 3.2. Dialog pro přidání stránky a detekci oblastí
Po kliknutí na ikonu
Otevřít soubor zvolíme obrázek s naskenovaným papírovým formulářem (ukázkový soubor je distribuován s aplikací a naleznete jej v instalační složce v sample/potvrzeni_studium_rotated.jpg).
Poznámka
Pokud máte k počítači připojen scanner, pak jste místo otevření obrázku ze souboru mohli
naskenovat obrázek nový. Poklepání na ikonku Scanner otevře standardní systémový dialog
pro výběr scanneru a dále v dodaném software k vašemu scanneru naskenuje obrázek. Ten je
poté vložen do dialogu pro detekci políček na stránce k dalšímu zpracování.
Přiložený obrázek je schválně trochu natočen, abychom mohli ilustrovat funkci automatické detekce
narovnání obrázku. Pomocí tlačítka Automaticky narovnat ve skupině Rotace se provede rychlá detekce
čar a narovnání obrázku.
Nyní můžeme z obrázku oříznout přebývající kusy. Poklepání na ikonku Vyříznout spustí ořezávání
obrázku. Nastavte průhledný obdélník tak, jak vidíte na obrázku 3.3 – „Oříznutí obrázku formuláře“
a stiskněte Dokončit.
9
Návrhář formulářů
Obrázek 3.3. Oříznutí obrázku formuláře
Poté je potřeba nastavit velikost obrázku v milimetrech, ta je sice zjištěna při načtení obrázku, nemusí
však být vždy správná. Kalibrační čáru
umístíme do dostatečně velkého políčka na formuláři
(například do pole Vysoká škola). Při umisťování okrajů čáry na hranu okénka si obrázek dostatečně
přiblížíme pomocí skrolování kolečka myši při držení klávesy CTRL. Po umístění čáry změříme velikost
políčka na papíře a údaj v milimetrech zadáme do pole Délka čáry. Na ukázkovém obrázku je šířka
políčka Vysoká škola přesně 164 mm.
Další nastavení v dialogu slouží k detailnějšímu nastavení chování detekce oblastí, my se však spokojíme se standardními hodnotami a pustíme detekci pomocí tlačítka Provést analýzu. Aplikace by nyní
měla vypadat následovně:
10
Návrhář formulářů
Obrázek 3.4. OCR s vydetekovanými oblastmi
Po skončení detekce se nám zobrazí nalezené oblasti (ohraničené červeně) a my můžeme dialog ukončit tlačítkem Ukončit a pokračovat ve vytváření formuláře. Detailní popis nastavení detekce naleznete
v kapitole 6 – „Detektor oblastí a rotace“.
3.2.2. Tvorba formulářových polí
Po úspěšném přidání stránky do formulářů se vrátíme do návrháře formulářů, kde můžeme začít vytvářet políčka formuláře. Detekované oblasti jsou pouze nápovědy pro umístění políček na formuláři (detekovaná oblast sama o sobě nemůže nabývat žádné hodnoty a při tisku formuláře se nezobrazuje). Ne
každé položka formuláře je jednoduchá, některé položky se mohou fyzicky skládat z více oblastí, které
však dohromady nabývají jedné hodnoty. Příkladem složené položky je například rodné číslo, které má
10 oblastí, každou pro jednu číslici.
Proto v programu a i dále v textu budeme rozlišovat mezi položkou formuláře, která reprezentuje jedno
celé pole na formuláři a nabývá nějaké hodnoty (například 800120/3221), a tiskovou oblastí, což pro
nás znamená obdélníkové místo na formuláři, do kterého lze něco napsat (například jedna číslice rodného čísla). Položky formuláře tedy mohou sestávat z libovolného počtu tiskových oblastí. Detekované
oblasti tedy odpovídají tiskovým oblastem a naším úkolem nyní bude je seskupit do formulářových polí.
Detekované oblasti jsou na stránkách zobrazené červeně, žlutě a zeleně a tiskové oblasti modře a šedivě (podle jejich typu). Podrobnější vysvětlení použité terminologie a vlastností položek a formulářů je
v kapitolách 3.5.1 – „Položka formuláře“ a 3.5.2 – „Oblast tisku“. Obecně platí, že vlastnosti položek
určují typ hodnot, kterou položka má a popis, jak tuto hodnotu získat. Vlastnosti oblastí naopak určují,
jak některou část celkové hodnoty položky vytisknout na papír (jako zarovnání textu, font atd.).
V základním rozložení aplikace máme v levém sloupci základní přehled typů tiskových oblastí podle
typu dat, který jsou schopny zobrazit. Přetažením vzorové oblasti na formulář vytvoříte novou oblast,
která je umístěna do taktéž nově vytvořené položky formuláře. Pokud vzorovou oblast přetáhneme
nad detekovanou oblast, pak tato zoranžoví a zvýrazní tak pozici, na které bude nová tisková oblast
vytvořena (detekovaná oblast v tu chvíli zmizí). Postupně tedy přetáhneme tři oblasti typu Text do
11
Návrhář formulářů
políček Vysoká škola, Fakulta a Obor, čímž nám vzniknou položky polozka1, polozka2 a polozka3
a každá z nich bude vlastnit jednu tiskovou oblast. Hlavní okno aplikace pak vypadá přibližně takto 3.5
– „Formulář potvrzení o studiu po vytvoření 3 položek“.
Obrázek 3.5. Formulář potvrzení o studiu po vytvoření 3 položek
Poznámka
Pokud vám uvedeným postupem nevznikly 3 nové formulářové položky, pak nemáte zaškrtnutou volbu Úpravy → Pokaždé vytvářet nové položky , což způsobuje umisťování nově vytvářených oblastí do aktuálně vybrané položky (v seznamu Položky formuláře je aktuální položka
zvýrazněna tučně).
Undo a redo
Pokud se vám něco nepovede, nemusíte si zoufat. Ve všech aplikacích Form Tools je ukládána
historie akcí. Ty jdou poté kliknutím na tlačítko vrátit zpět (popřípadě později zase obnovit).
Návrat zpět lze taktéž provést pomocí klávesové zkratky CTRL+Z, naopak obnovení naposledy
vrácené změny se provádí zkratkou CTRL+Y.
Vytvořené položky nyní přejmenujeme, abychom se v jejich seznamu lépe orientovali (až později budeme vytvářet skripty, tak se nám bude rozumné pojmenování položek hodit). Kliknutím na oblast v řádku
s titulkem Vysoká škola vybereme jí odpovídající položku v seznamu vpravo, dvojklikem na identifikátor položky se dostaneme do editačního módu, kde zadáme vysoka_skola a potvrdíme klávesou
ENTER. Jméno položky může být složeno z písmenek anglické abecedy, číslic a podtržítka.
Při přejmenování dalších položek budeme postupovat trochu jinak, abychom si ukázali způsob práce
s vlastnostmi položek. V seznamu Položky formuláře vyberte položku polozka2, tím se na papírovém
formuláři zvýrazní všechny její oblasti (aktuálně jenom jedna) a v seznamu Vlastnosti položky formuláře
se zobrazí vlastnosti vybrané položky. Dvojkliknutím do sloupečku Hodnota v řádku Identifikátor se dostaneme do módu editace identifikátoru položky a můžeme zadat její nové jméno, například fakulta.
12
Návrhář formulářů
Po potvrzení nového jména se změní název položky i v seznamu Položky formuláře. V seznamu Vlastnosti položky formuláře jsou zobrazeny všechny editovatelné vlastnosti vybrané položky, jejich detailní
popis je v kapitole 3.5.1 – „Položka formuláře“.
Editace vlastností více položek (a oblastí) najednou
V seznamech Vlastnosti položky formuláře a Vlastnosti oblasti tisku lze najednou měnit vlastnosti více položek (popřípadě tiskových oblastí) najednou. Stačí jich pouze vybrat více najednou
(kliknutím na nevybranou položku při současném držení klávesy CTRL). Vlastnosti, jež u vybraných položek nemají stejnou hodnotu jsou zvýrazněny šedým pozadím a v kolonce Hodnota
mají uvedeno rozdílné hodnoty. Při najetí myší nad takovouto vlastnost se zobrazí seznam
rozdílných hodnot dané vlastnosti ve vybraných položkách.
Nyní si ukážeme další možnosti převodu oblastí. Vyberte detekovanou oblast Jméno a příjmení a zmáčkněte klávesu ENTER. Tím dojde k převodu aktuálně vybrané detekované oblasti na oblast tiskovou,
2
která bude umístěna do nově vytvořené položky, polozka1 . Vlastnosti nově vytvořené oblasti jsou
vybrány podle aktuálního prvku v seznamu Základní typy oblastí . Stejný postup funguje i na převod
více oblastí najednou, ty jsou pak všechny umístěny do jedné položky, což se hodí například na políčko
Rodné číslo.
Při převodu jsme vynechali políčko akademický rok, které nám detektor oblastí správně nalezl, avšak
již nerozdělil na dvě části pro dva různé roky, což my chceme. Nejprve v seznamu vzorových oblastí vybereme Jedno slovo a poté z políčka jedním z výše popsaných způsobů vytvoříme položku
rok_prvni. Poté najedeme myší nad pravý okraj vytvořené textové oblasti, zobrazí se nám kurzor na
změnu velikosti oblasti a při současném držení levého tlačítka myši a pohybu kurzoru oblast zmenšíme,
aby zabírala pouze levou část kolonky, viz 3.6 – „Změna šířky oblasti“.
Obrázek 3.6. Změna šířky oblasti
Pro vytvoření oblasti (a položky) pro druhou půlku akademického roku použijeme jiný postup, najedeme
myší do levého horního rohu obdélníku, ve kterém chceme vytvořit novou oblast, a při současném držení
klávesy SHIFT a levého tlačítka myši přejedeme kurzorem do pravého dolního rohu obdélníku. Tím
vytvoříme novou oblast, která bude umístěna do nové položky, tu přejmenujeme na rok_druhy.
Hýbání s oblastmi a jejich klonování
Pokud se vám nepovedlo nakreslit novou oblast na správné místo, můžete ji přesunout tažením
myši. Takto lze přesouvat více oblastí najednou (vždy jsou přesunuty všechny vybrané oblasti
z jedné stránky). Pokud před přesunem držíte klávesu CTRL, tak dojde k naklonování vybraných
oblastí a přesunu těch nových. Při klonování oblastí jsou všechny umístěny do nově vytvořené
položky v případě, že je zaškrtnuta volba Pokaždé vytvářet nové položky, v opačném případě
jsou nové oblasti přidány na konce seznamů jejich vlastních položek.
Na formuláři nám ještě zbývají dva zatím neprozkoumané typy políček, a to zaškrtávací pole (pro výběr
jedné z možností) a položka s více oblastmi. Nejprve se podívejme na položky s více oblastmi pro políčko
rodné číslo . Ze seznamu typů oblastí přetáhneme Jeden znak nad první políčko rodného čísla, zatím
však nepouštíme levé tlačítko myši. První detekovaná oblast rodného číslo zoranžoví a tím zobrazí,
kde bude vytvořena nová oblast. Pokud v tuto chvíli zmáčkneme klávesu CTRL, tak se zvýrazní celá
skupina deseti detekovaných oblastí. V tuto chvíli můžeme pustit levé tlačítko myši, teprve poté můžeme
pustit klávesu CTRL a namísto deseti detekovaných oblastí máme deset tiskových oblastí, které byly
všechny přiřazeny do nově vytvořené položky formuláře. Tu můžeme přejmenovat na rodne_cislo
a typ dat jí nastavit na Celé číslo.
2
Položku s tímto jménem jsme na formuláři již měli, ale přejmenovali ji na vysoka_skola. Automatické pojmenovávání vždy
zvolí pro novou položku jméno s nejmenším číslem, které v aktuální skupině položek ještě není.
13
Návrhář formulářů
Poslední typ políček na formuláři jsou zaškrtávací pole, konkrétně studijní program a forma studia.
V těchto místech nám detekce nalezla jeden velký obdélník, který nám nevyhovuje. Proto všechny špatně vydetekované oblasti označíme a stiskem klávesy DELETE je smažeme. Práce se zaškrtávacími
poli je poněkud složitější, proto zatím v rámci tohoto tutoriálu tento problém vyřešíme jednoduše, jeho
čistší a příjemnější řešení ponecháme na kapitolu 3.3.8 – „Výběry z více možností“. Nejprve vybereme
3
vzorovou oblast typu Zakroužkování a poté nakreslíme tři nové oblasti, každou přes jednu z možností bakalářský, magisterský a doktorský. To nám vyrobí tři položky typu Ano/Ne, které vhodně pojmenujeme. Tím je práce hotova, stejným způsobem můžeme vytvořit i položky pro volbu formy studia.
Tip
Oblasti na stránce se dají taktéž vybírat tažením myši. Stačí zmáčknout a držet levé tlačítko
myši v místě bez oblastí a přetáhnout výběrový obdélník přes oblasti. Po puštění levého tlačítka
myši budou všechny překryté oblasti vybrány.
Zbytek formuláře tvoří nám už známé typy oblastí, vytvoříme z nich tedy formulářové položky stejným
způsobem. Pro zbytek oblastí použijeme typ oblasti Text. Jednořádkovým oblastem pak můžeme nastavit vlastnost Víceřádkový text na hodnotu Ne. U položek reprezentujících datum, můžeme nastavit Typ položky na Datum. Správné nastavení typů položek usnadňuje kontrolu automatickou kontrolu
vstupních dat. Po dokončení převodu formuláře a smazání přebývajících detekovaných oblastí vypadá
aplikace jako na obrázku 3.7 – „Formulář potvrzení o studiu kompletně vytvořený“.
Obrázek 3.7. Formulář potvrzení o studiu kompletně vytvořený
3.2.3. Elektronický formulář
Po definici vzhledu formuláře na papíře je potřeba vytvořit vzhled formuláře v aplikacích, které jej budou
zobrazovat uživatelům k vyplnění. Tuto úlohu můžeme provést v záložce Elektronický formulář, vpravo
vedle záložky, na které jsme vytvářeli vzhled formuláře na papíře.
3
V zápatí formuláře se píše, že se mají nevhodné možnosti škrtnout, my však pro jednoduchost zvolíme kroužkování správných
voleb. Zvýraznění správné volby má tu výhodu, že se nemusí převracet logická hodnota vstupu z formuláře.
14
Návrhář formulářů
Po přepnutí na záložku pro editaci elektronické podoby formuláře vidíme po levé straně seznam vstupních položek (těch, které jsou potřeba vyplnit od uživatele), uprostřed se nachází tabulka, ve které vytvoříme návrh a po pravé straně jsou nastavení jednotlivých položek elektronického formuláře a celého
formuláře, viz 3.8 – „Návrh elektronického formuláře“.
Obrázek 3.8. Návrh elektronického formuláře
Naším úkolem je nyní přetahat všechny položky ze seznamu Ovládací prvky do tabulky. Pro tuto chvíli
se spokojíme s nejjednodušším, automatickým rozložením ovládacích prvků na elektronickém formuláři.
Toho docílíme kliknutím na ikonu Vytvořit ovládací prvky pro všechny položky formuláře. Nyní vidíme
(na 3.9 – „Automaticky vytvořený elektronický formulář“), že každá ze vstupních položek je reprezentovaná dvěma buňkami, jednou pro zobrazení názvu pole a jednou buňkou pro ovládací prvek sloužící
k editaci hodnoty položky. Ovládací prvky jsou vytvořeny automaticky podle zvoleného typu položky na
papírovém formuláři. Vlastnosti jednotlivých ovládacích prvků můžeme editovat v seznamu Vlastnosti
položek formuláře.
15
Návrhář formulářů
Obrázek 3.9. Automaticky vytvořený elektronický formulář
Dále je potřeba formulář trochu poupravit, aby uživatelé věděli, co do které kolonky patří. Pro změnu
zobrazovaného titulku u políčka vysoka_skola vybereme tento ovládací prvek dvojklikem myši v tabulce (popřípadě jej můžeme vybrat ze seznamu Položky) a v seznamu jeho vlastností upravíme hodnotu vlastnosti Statický text na Vysoká škola. Ostatní popisky můžeme upravit stejným způsobem.
V tabulce poté ještě rozšíříme první i druhý sloupeček tak, aby se do nich popisky a ovládací prvky
vešly. Sloupce lze rozšiřovat v záhlaví tabulky. Tabulka umožňuje přesouvání polí, spojování více polí
dohromady (vytváření větších polí obdélníkového tvaru), tvorbu rozložení podle formuláře a spoustu
dalších věcí pro tvorbu tabulkového formuláře. My se prozatím spokojíme s aktuálním rozložením políček, k rozložení dat v tabulce se dostaneme v kapitole 3.3.13 – „Rozložení elektronického formuláře“.
3.2.4. Úložiště dat
V tuto chvíli máme již navrženo rozložení formuláře na papíře (umíme jej tisknout) a vzhled formuláře
na obrazovce pro uživatele, kteří budou formulář vyplňovat. Nyní do formuláře doplníme možnost ukládání získaných dat. To se hodí skoro pokaždé, protože ne vždy chceme formulář ihned po vyplnění
uživatelem vytisknout. Spíše naopak čekáme, až dostatečný počet uživatelů formuláře vyplní najednou
a až poté provedeme jejich další zpracování, popřípadě tisk. Form Tools podporují dva typy úložišť dat,
jednak obyčejný textový soubor se sloupci oddělenými speciálními znaky (nejčastěji čárkou nebo středníkem), tzv. CSV formát. Druhou možností úložiště je databáze. V tomto tutoriálu vybereme jednodušší
ze dvou variant, CSV soubor a definici databázového úložiště ponecháme do kapitoly 3.3.14 – „Podpora
ukládání dat v databázi“.
Pro přidání definice CSV úložiště potřebujeme přidat další záložku do našeho dokumentu. To provedeme výběrem Formulář → Přidat definici úložiště formuláře , v nově otevřeném dialogu 3.10 – „Přidání
zdroje dat“ vybereme typ CSV a zadáme identifikátor úložiště. Po potvrzení tlačítkem OK se dostaneme
do záložky pro editaci CSV úložiště.
16
Návrhář formulářů
Obrázek 3.10. Přidání zdroje dat
Poznámka
V rámci jednoho formuláře může být více definicí vzhledu elektronického formuláře a více definicí úložišť. Proto je při jejich vytváření nutné zadávat unikátní identifikátor.
Nově vytvořená záložka má vzhled podobný jako záložka pro definici elektronického formuláře (viz 3.11
– „Nastavení CSV úložiště formuláře“. Jediným rozdílem je střední část, kde je zobrazena tabulka pro
mapování z identifikátorů položek na jména sloupečků výsledného CSV souboru. My se i zde spokojíme
se standardními názvy a pořadím sloupců souboru a poklepáním na ikonu
Vytvořit ovládací prvky
pro všechny položky formuláře přesuneme všechny položky do tabulky. V té již nepotřebujeme nic měnit. Jména sloupců je možné měnit v centrální tabulce, v seznamu Položky formuláře nebo v seznamu
Vlastnosti položek. V seznamu Vlastnosti je možné upravovat nastavení celého souboru, jako je Oddělovač sloupců a Uvozovací znak. Uvozovací znak slouží k ohraničení každého sloupce, oddělovač je
pak vložen mezi každé dva sloupce v CSV souboru. Nám zde postačí standardní hodnoty.
Obrázek 3.11. Nastavení CSV úložiště formuláře
Pořadí sloupců v souboru je možné měnit v seznamu Položky formuláře. Zde stačí označit několik řádků,
poté je chytnout myší a odnést na nové místo. Po puštění levého tlačítka myši budou přenášené řádky
vloženy na novou pozici, ostatní jsou posunuty.
17
Návrhář formulářů
3.2.5. Export formuláře pro vyplňování
Nyní již máme formulář celý navržen a můžeme jej vyexportovat do aplikace určené k jeho vyplňování.
Formuláře vytvořené v Návrháři formulářů je možné vyplňovat dvěma způsoby, buďto přes webové
stránky, kde lze výsledky zpracovat pomocí automaticky generovaných PHP skriptů. Druhou možností
je vyplňování formuláře a správa jeho dat v aplikaci Vyplňovač formulářů.
My si vybereme export do Vyplňovače formulářů, který je dostupný v menu Soubor → Export formuláře
→ Pro aplikaci Vyplňovač formulářů . To nám otevře dialog 3.12 – „Dialog pro export formuláře pro
Vyplňovač formulářů“, kde seznam Elektronický formulář obsahuje námi definované vzhledy elektronického formuláře (tedy jeden jediný).
Obrázek 3.12. Dialog pro export formuláře pro Vyplňovač formulářů
Zaškrtávací políčko Exportovat bez obrázku na pozadí a rozpoznaných oblastí necháme nezaškrtnuté.
V případě, že bychom jej zaškrtli, bychom si v aplikaci pro vyplňování formulářů nemohli zobrazit náhled
na získaná data na papírovém formuláři.
Stiskem tlačítka
Přidat nové datové úložiště otevřeme dialog 3.13 – „Výběr datového úložiště při
exportu formuláře pro Vyplňovač formulářů“.
18
Návrhář formulářů
Obrázek 3.13. Výběr datového úložiště při exportu formuláře pro Vyplňovač
formulářů
Zde v seznamu Typ datového zdroje vybereme identifikátor vytvořeného CSV úložiště a další kolonky popisující jméno úložiště v aplikaci Vyplňovač formulářů a cestu k souboru, do kterého vytvořená
data ukládat (relativní vůči souboru exportovaného projektu), necháme nezměněny. Dialog potvrdíme
a vracíme se zpět do dialogu na export formuláře (3.12 – „Dialog pro export formuláře pro Vyplňovač
formulářů“), kde nám do tabulky přibyl řádek s vybraným úložištěm. Nyní jsme aplikaci poskytli všechny důležité informace pro export formuláře pro jeho vyplňování (tedy způsob, jak jej zobrazovat i kam
ukládat data) a můžeme pokračovat k výběru souboru, do kterého projekt uložit.
Poznámka
V tomto kroku jsme mohli do exportovaného dokumentu přidat více datových úložišť. Tím
bychom dosáhli toho, že bychom si mohli data ve vyplňující aplikaci rozdělit do více souborů. V našem případě bychom si mohli pořídit jeden CSV soubor pro každou fakultu naší školy
a mít potvrzení od studentů rozdělená do souborů, avšak všechna pohromadě na jednom místě
v aplikaci Vyplňovač formulářů.
Po výběru cesty k souboru, do kterého projekt exportovat (*.fts soubor), je tento uložen. Do stejné
složky je přidána uložená definice celého formuláře (*.ftd dokument) a jsou založeny všechny přidané
soubory pro ukládání dat (*.csv).
3.2.6. Kam dále?
Právě jsme dokončili tvorbu jednoduchého formuláře, který jsme vyexportovali pro jeho vyplňování. Nyní
máte dvě možnosti, kam se v dokumentaci ubírat. Buďto můžete pokračovat pokročilými kapitolami
o tvorbě formulářů (v 3.3 – „Pokročilá tvorba formuláře“), nebo můžete nahlédnout do základů práce
s Vyplňovačem formulářů a v kapitole 4.1 – „Otevření projektu ve Vyplňovači formulářů“ pokračovat
vyplňováním právě vytvořeného formuláře.
Vytvořený ukázkový formulář je distribuován s aplikací a je uložen v instalačním adresáři v souboru
sample/potvrzeni_simple.ftd, vyexportovaný formulář pro Vyplňovač formulářů pak ve složce
sample/potvrzeni-simple/.
3.3. Pokročilá tvorba formuláře
V tutoriálu jsme si ukázali pouze základní možnosti aplikace, vytvořili jsme tak jednoduchý statický formulář. V následujících kapitolách budeme vytvořený formulář přetvářet tak, aby se lépe vyplňoval uživatelů, a také proto, abychom předvedli další vlastnosti Návrháře formulářů. Při práci s položkami formuláře a tiskovými oblastmi budeme používat jejich vlastnosti bez bližšího vysvětlení, to je totiž možné
najít v manuálu v kapitole 3.5 – „Manuál“.
3.3.1. Vzhled formuláře na papíře
Pro ladění vzhledu vlastností tiskových oblastí je v editoru možnost zobrazení náhledu přes ikonku
Náhled, které zobrazí dialog s náhledem na formulář vyplněný vzorovými daty. Dialog náhledu je popsán
19
Návrhář formulářů
v dokumentaci k Vyplňovači formulářů v 4.3 – „Náhled na tištěný formulář“. V této sekci jej budeme
používat pro kontrolu vzhledu.
První věc, které si všimneme v náhledu jsou různé velikosti fontů a to, že texty v oblastech jsou příliš
přiražené k levým horním okrajům. Vybereme tedy všechny textové oblasti a nastavíme jim vlastnost
Písmo. Kliknutím na ikonku
Otevřít dialog pro výběr fontu zobrazíme standardní systémový dialog,
kterým můžeme vybrat název, velikost a styl písma. Velikost fontu je uvedena jako dvojnásobek počtu
milimetrů, které bude dané písmo zabírat na papíře. Odsazení udává vzdálenost od okrajů v rámci
oblastí, do které se nesmí psát text, tato vlastnost nám poslouží k posunutí textů v rámci polí o trošku
doprava dolů. Poté ještě můžeme zmenšit velikost textu pro víceřádkové oblasti, aby se nám vešly 3
řádky pod sebe.
Dále u políček rok_prvni nastavíme Horizontální zarovnání na Doprava a u rok_druhy na Doleva,
tím docílíme, že ročník bude blízko u sebe a můžeme si pohrát se zarovnáním dalších oblastí.
Dále u víceřádkových políček nastavíme Přetečení na Zmenšit font, což nám zajistí, že text vpisovaný do této kolonky nepřesáhne spodní okraj, místo toho dojde ke zmenšení písma tak, aby se do
kolonky vešel celý text.
3.3.2. JavaScript editor
V následujících kapitolách budeme pracovat se programy napsanými v JavaScriptu. Takovéto programy
mohou být značně dlouhé a je nepohodlné je vyplňovat v editoru v jednom řádku, jako na obrázku 3.14
– „Otevření editoru pro JavaScript“.
Obrázek 3.14. Otevření editoru pro JavaScript
Kliknutím na ikonku Otevřít JavaScript editor pro pohodlnější editaci programu se otevře nové dialogové okno, ve kterém je možné upravovat program, 3.15 – „JavaScript editor se zvýrazňováním syntaxe“.
Obrázek 3.15. JavaScript editor se zvýrazňováním syntaxe
Kromě zvýrazňování syntaxe patrného z obrázku navíc editor podporuje automatické odsazování textu
a automatické dokončování názvů položek (a skupin) a jejich funkcí. Pro vyvolání nápovědy pro dokončení aktuálního identifikátoru (3.15 – „JavaScript editor se zvýrazňováním syntaxe“) zmáčkněte upro-
20
Návrhář formulářů
střed psaní slova kombinaci kláves CTRL+MEZERA, poté můžete šipkami vybrat požadovanou volbu,
do textu ji vložíte stisknutím klávesy ENTER.
Obrázek 3.16. Nápověda pro automatické dokončení
Poznámka
Nastavení funkcí a vzhledu skriptového editoru naleznete v hlavním menu aplikace v Nastavení
→ Nastavení v záložce JavaScript.
Všechny položky formuláře (a i skupiny položek) jsou v JavaScriptu reprezentovány objekty, k jednotlivým položkám (funkcím a podobjektům) se přistupuje pomocí oddělovače . (tečka). Z obrázku 3.16
– „Nápověda pro automatické dokončení“ je vidět, že objekt pro skupinu obsahuje jako svoje atributy
všechny své podskupiny a položky, plus metody pro práci s nimi. Pro všechny položky je potřeba používat plná hierarchická jména za všech okolností (k hodnotě položky polozka ve skupině skupina se
přistupuje pomocí kódu skupina.polozka.value()).
Programy ve všech vlastnostech položek mohou mít dva tvary. Buďto mohou být zadány jako výraz
začínající znakem = a končící znakem ;. Například:
= cista_cena.value() * ( 1 + dan.value() / 100);
Druhý způsob zadání programů je vytvořením těla funkce (bez její hlavičky). V takovémto kódu je možné
používat příkazy pro řízení toku programu (rozhodovací příkaz, cykly, atd.). Tělo funkce není ničím odvozeno, výsledek se vrací pomocí příkazu return NAVRATOVA_HODNOTA;. Ukázka výpočtu celkové
ceny pro dvě různé sazby daně pro potraviny a ostatní zboží:
if (vyrobek_typ == "Potraviny")
return cista_cena.value() * 1.05;
else
return cista_cena.value() * 1.20;
Varování
V JavaScriptu hrají důležitou roli znaky nových řádků, ty mají stejný účinek jako znak ; (středník), tedy ukončují aktuální příkaz. Při psaní programů je potřeba na toto dbát a nepsat výrazy
přes více řádek.
Změny v kódu potvrdíte stiskem tlačítka OK, čímž se přepnete zpět do zobrazení vlastnosti v seznamu
vlastností. K otestování správnosti napsaného kódu můžete před uložením stisknout tlačítko Zkontrolovat, které vypíše OK nebo pozici první chyby v kódu, v tom případě ještě nastaví kurzor v editoru na
tuto pozici.
3.3.3. Datové typy položek
Položkám můžeme nastavit datové typy podle očekávaných vstupních hodnot. To nám později umožní
použít automatické kontroly vstupních hodnot z formulářů a také nasazení specializovaných editorů při
vytváření elektronického formuláře. Vybereme tedy položky dne a datum_narozeni a nastavíme jim
Typ na Datum. rok_prvni, rok_druhy, rocnik a rodne_cislo jsou naopak Celá čísla.
21
Návrhář formulářů
Pro rodné číslo navíc platí omezení, že jeho hodnota musí být dělitelná jedenácti. Ke kontrole platnosti
hodnoty nám slouží vlastnost položky Validita, do které můžeme zapsat kód v jazyku JavaScript.
if (this.value() % 11 == 0)
return true;
else
return "Neplatné rodné číslo.";
Vrácení true označuje platnou hodnotu, zatímco false nebo řetězec oznamující chybovou hlášku
označují neplatnou hodnotu.
Podobně můžeme zkontrolovat, že zadaný první rok je v rozumném rozmezí:
if (this.value() > 2000 && this.value() < 2100)
return true;
else
return "Zadejte rok v intervalu (2000, 2100).";
Druhou část školního roku prozatím nebudeme kontrolovat, protože z ní v následujících kapitolách uděláme hodnotu vypočtenou.
3.3.4. Povinné položky
Všechny položky jiného typu než Řetězec jsou automaticky považované za povinné a je v nich požadována neprázdná vstupní hodnota (jinak jsou nevalidní). To platí pouze v případě, že u nich nejsou
nastaveny Implicitní hodnoty. Implicitní hodnoty se hodí například pro číselné kolonky v daňovém
přiznání, kde nemusíme uživatele nutit vyplnit všechny položky, ale do nevyplněných si domyslíme nuly.
U položek typu Řetězec je považován i prázdný řetězec za správnou hodnotu. Tudíž zde musíme
případné povinné hodnoty doprogramovat ručně, čehož lze jednoduše dosáhnout následujícím skriptem
pro vlastnost Validita:
= this.value() != "";
Poznámka
V každém z programů zadávaném do systému máme za úkol vrátit nějakou hodnotu (jedná se
o deklarativní programování). To lze učinit dvěma způsoby, buďto můžeme napsat standardní
program v JavaScriptu a proložit jej příkazy na návrat hodnoty (return), nebo můžeme napsat
= VYRAZ;, jako v tomto případě.
3.3.5. Ladění skriptů
Nyní se podíváme na to, co dělat v případě, že chceme napsaný kód programů ladit (zkontrolovat, zda
funguje správně). Jedním ze způsobů této kontroly je vyexportování formuláře pro Vyplňovač formulářů,
následné otevření formuláře v této aplikaci, kontrola funkčnosti, návrat do Návrháře formulářů a oprava
skriptů. Jak vidno, tento způsob není nikterak jednoduchý, má však jednu výhodu: ve vyexportovaném
projektu můžeme mít v datových úložištích uložena data, která ve Vyplňovači formulářů rovnou otevřeme
a zkusíme. Při opravě skriptů pak nemusíme exportovat celý projekt znovu, pokud neměníme datové
zdroje, stačí nám uložit formulář jako *.ftd dokument v exportovaném projektu.
Pro jednodušší ladění skriptů je přímo v Návrháři formulářů Script debugger, který spustíme poklepáním
na ikonku Ladění skriptů. To nám spustí dialog 3.17 – „Dialog pro ladění skriptů“. V levé části je vidět
okno s aktuálním elektronickým formulářem, kde můžeme zadat vstupní data a kde vidíme výsledky
22
Návrhář formulářů
validity. V pravé části je potom JavaScript editor (3.3.2 – „JavaScript editor“) se všemi programy všech
položek formuláře.
Obrázek 3.17. Dialog pro ladění skriptů
Editor obsahuje definice všech programů položek formuláře zobrazených ve tvaru
hierarchicke_jmeno_polozky.jmeno_programu =, poté následuje implementace programu ve
dvou tvarech, podle toho, jak byl zadán kód dané vlastnosti dříve v editoru programů. Pokud byl kód
zadaný výrazem, pak následuje hodnota výrazu, v případě těla funkce následuje definice anonymní
funkce. Definice takovéto funkce je vidět na obrázku 3.17 – „Dialog pro ladění skriptů“.
V tomto dialogu je možné jednak vyplňovat data, ta jsou rovnou vyhodnocována (vždy po opuštění
editačního pole). V editoru kódu lze rovnou programovat funkčnost jednotlivých položek. Po kliknutí
na tlačítko Uložit skript jsou data ve formuláři znovu vyhodnocena. Tlačítko Zobrazit náhled zobrazí
aktuálně vyplněná data (pokud jsou všechna validní) na papírovém formuláři.
3.3.6. Formátování výstupů
Ne vždy chceme hodnotu do papírového formuláře vytisknout v předem definovaném formátu, například u reálného čísla chceme zvolit počet desetinných míst, oddělovač tisíců a další parametry. Proto
má každá položka vlastnost Formátovací vzor, která obsahuje program formátující její hodnotu.
Zformátovaná hodnota je poté posílána do jednotlivých oblastí položky pro její zobrazení na formuláři.
Formátovat všemožné hodnoty pomocí JavaScriptového programu by bylo velmi náročné a zbytečně
se opakující. Proto je pro uživatele připravena funkce this.format(), která jako parametr bere formátovací řetězec. Jejím výstupem je zformátovaná hodnota this.value(). V našem příkladě se rozhodneme pro zformátování výstupů datumů.
Vybereme tedy položky datum_narozeni a dne a nastavíme jim hodnotu vlastnosti Textový výstup
na
= this.format("{day}.{month}.{year}");
23
Návrhář formulářů
Přehled formátovacích řetězců je v kapitole 3.5.4 – „Formátovací vzory“.
Protože návrh formátovacích vzorů není zcela jednoduchá záležitost, je k dispozici návrhář těchto vzorů,
který se snaží proces vytvoření vzoru maximálně usnadnit.
Obrázek 3.18. Návrhář formátovacích vzorů
Návrháře je možné spustit z řádku pro editaci vlastnosti Textový výstup stisknutím ikony Otevřít
návrhář formátovacích vzorů. Návrháře je taktéž možné pustit z editoru skriptů z kontextového menu
vyvolaného nad jménem funkce format popřípadě stisknutím kláves CTRL+MEZERA po dopsání názvu funkce format.
V prvním seznamu je možné vybrat typ, pro který bude vzor navrhován. Ve druhém seznamu pak jsou
vylistovány předpřipravené vzory pro zvolený typ. Je tedy možné dvojklikem vybrat požadovaný tvar
výstupu a odpovídající vzor se doplní do textového pole. Pokud by chtěl uživatel vzor pozměnit (nebo
vytvořit zcela nový) může toto textové pole editovat. V textu jsou vždy zvýrazněné dílčí vzory a chybné
jsou podtrženy. Pokud je vzor správný, zobrazuje se v poli Náhled náhled na vyhodnocený vzor pro
vzorová data, je zvýrazněný dílčí vzor, na kterém se aktuálně nachází kurzor a jsou aktivní prvky pro
nastavení jeho vlastností. Vždy jsou povoleny ty prvky, které odpovídají atributům, které lze ve vybraném
vzoru měnit. Prvek Minimální šířka odpovídá atributu width, Styl odpovídá atributu style, Oddělovač
skupin odpovídá group-separator, Desetinná tečka atributu decimal-separator a Vyplňovací
znak atributu padding. Dále je možné vybrat národní prostředí pro které se vzor bude vyhodnocovat.
Případné chyby jsou zobrazovány ve stavové liště.
Tlačítka Zkrátit a Rozšířit převádí vzor na zkrácený resp. rozšířený tvar, který je lépe čitelný, ale zabírá
více místa.
3.3.7. Vypočtené (nevstupní) položky
Na našem formuláři je jedna položka, rok_druhy, u které nemá smysl, aby jí uživatel vyplňoval, protože
je vždy o 1 větší než hodnota položky rok_prvni. Nejprve je potřeba změnit vlastnost vypočtené
položky Vstupní položka na Ne, tím se nám změní seznam jejích vlastností a vlastnost Hodnota
položky, do které se píše program pro výpočet hodnoty, se nám označí jako chyba, protože není
vyplněna. Tuto chybu můžeme napravit zadáním jednoduchého programu:
= rok_prvni.value() + 1;
Na stavové liště aplikace vpravo dole je zobrazen počet chyb, který funguje jako tlačítko, kliknutím na
text Nalezeny 2 chyby se nám zobrazí seznam chyb jako na obrázku 3.19 – „Náhled na vzorová data
vyplněná v potvrzení o studiu“.
24
Návrhář formulářů
Obrázek 3.19. Náhled na vzorová data vyplněná v potvrzení o studiu
U každé chyby je zobrazen odkaz (modrý text), kliknutí na něj nás přepne do správné záložky a zvýrazní
chybnou položku.
Kliknutím na první odkaz, zvýraznit položku, se přepneme do elektronického formuláře, kde nám je
vybrána položka rok_druhy, u které nám stačí změnit hodnotu vlastnosti Typ položky na Statický
text, jak nám říká i text chyby.
Poznámka
Ovládací prvek pro druhý rok bychom mohli z elektronického formuláře úplně smazat, my ji tam
však necháme, aby byla tato informace vidět při vyplňování formuláře.
K položce způsobující druhou chybu se dostaneme stejným způsobem a nyní ji potřebujeme odstranit.
Proto na ni klikneme a zmáčkneme klávesu DELETE, popřípadě z jejího kontextového menu zvolíme
možnost Odstranit vybrané ovládací prvky. Tím se zbavíme všech chyb v dokumentu a můžeme zkusit
pustit dialog Ladění skriptů a zkontrolovat chování vypočtené položky.
Při ladění skriptů vidíme, že hodnota druhého roku je rovna hodnotě prvního roku pouze v případě, že
má první rok správnou hodnotu. V ostatních případech je hodnota druhé položky nedefinovaná.
3.3.8. Výběry z více možností
V této kapitole ukážeme tři možná řešení dříve zmíněného problému pro výběr z možností. V základním
tutoriálu jsme místo škrtání neplatných možností kroužkovali vybrané možnosti, což bylo proti instrukcím
na formuláři. V první ukázce budeme pouze řešit převrácení hodnot, v dalších řešeních už zařídíme, aby
měl uživatel vždy jen jedno vybírací políčko (a nemohl si tak zvolit bakalářský a magisterský program
najednou.
Prvním z řešení bude použití formátovacího vzoru položek pro převrácení zobrazené hodnoty. Nejprve
je potřeba nastavit oblastem, aby respektovaly formátovací vzor položky. Vybereme tedy tři oblasti pro
výběr studijního programu a nastavíme jim Styl oblasti na Určeno znakem. Poté všem vybraným
položkám nastavíme vlastnost Textový výstup na:
if (this.value())
return ' ';
else
return 'X';
Tím dosáhneme zobrazení prázdného pole v případě zaškrtnutí vstupního políčka a zobrazení křížku
v případě, že vstupní políčko zaškrtnuto není. Více informací o stylech výběrových oblastí naleznete
v kapitole „Nastavení oblasti tisku typu zaškrtávání“. Toto řešení však není elegantní, protože uživatel
má stále možnost vybrat více než jeden studijní program, proto budeme dále pokračovat bez těchto
změn.
Nyní se zaměříme na možnost použití jedné vstupní položky bez oblasti a tří položek s vypočtenou hodnotou z této jedné. Do datového modelu přidáme novou položku pomocí tlačítka Vytvořit novou položku bez oblastí. Tu přejmenujeme na studijni_program a nastavíme jí vlastnost Vstupní položka
na Ano. Poté nastavíme Výběr z možností na Ano, čímž nám přibude vlastnost Hodnoty, do které
máme za úkol napsat program vracející seznam použitelných hodnot v položce. Následujícím kódem:
= ["Bakalářský", "Magisterský", "Doktorský"];
25
Návrhář formulářů
nastavíme položce tyto hodnoty.
Naopak položkám bakalarsky, magistersky a doktorsky nastavíme, že nejsou vstupní a jejich
programy budou velmi jednoduché, pro bakalářský program konkrétně nastavíme :
if (studijni_program.value() == "Bakalářský")
return false;
else
return true;
Stejně jako v minulém případě pak musíme odstranit tyto tři položky z CSV úložiště (naopak do něj
přidat studijní program) a taktéž odstraníme položky z elektronického formuláře. I do elektronického formuláře přidáme (přetažením) položku studijni_program ze seznamu Ovládacích prvků. Nově vytvořený
ovládací prvek je přidán s editorem pro výběr jedné z možností. Chování formuláře si můžeme ověřit
v Ladění skriptů a zobrazením náhledu na data.
Daný problém se dá vyřešit ještě jiným způsobem a ten dokonce využívá pouze jednu položku. Pro
její základ vybereme položky prezencni, kterou přejmenujeme na forma_studia, nastavíme Typ
položky na Řetězec, Výběr z možností na Ano a do programu určujícího Hodnotu dáme:
= ["Prezenční", "Distanční", "Jejich kombinace"];
Poté potřebujeme přesunout další dvě oblasti z položek distancni a kombinace do této položky a tyto dvě smazat. Přesun oblastí mezi položkami lze provést v seznamu Vlastnosti položky formuláře, pokud máme vybrané všechny tři položky. V dolní části seznamu máme seznam oblastí ve vybraných položkách, z nich vybereme oblasti z rušených položek a myší je přeneseme do položky forma_studia
pod oblast Oblast 1, viz 3.20 – „Přesun oblastí do jiné položky“.
Obrázek 3.20. Přesun oblastí do jiné položky
Poté druhé dvě položky smažeme (jejich vybráním v seznamu Položky formuláře a stisknutím klávesy
DELETE). Poté nám už stačí oblastem nastavit Styl na Určeno vzorem a Textový výstup
položky na program, který bude podle hodnoty vstupu nastavovat správné znaky jednotlivým oblastem,
tedy:
if (this.value() == "Prezenční")
return " XX";
else if (this.value() == "Distanční)
return "X X";
else if (this.value() == "Jejich kombinace")
return "XX ";
else
return "
";
26
Návrhář formulářů
Poznámka
Na pořadí oblastí v rámci položky záleží. V tomto pořadí si berou znaky z textového výstupu
své položky.
3.3.9. Statické oblasti
V některých případech je jasné, že některé kolonky mají nabývat stejné hodnoty za všech okolností.
Například kdybychom byli na studijním oddělení Matematicko-fyzikální fakulty Univerity Karlovy, tak by
pro nás bylo zbytečné neustále vyplňovat první dvě kolonky, Vysoká škola a Fakulta. Proto je možné
přidávat takzvané statické oblasti. Ty se od normálních oblastí liší tím, že si svou hodnotu pamatují
přímo ve svých vlastnostech (standardní tiskové oblasti si pouze pamatují způsob, jak svou hodnotu
získat z jejich položky).
Statickou oblast můžeme vytvořit přetažením jednoho ze základních typů oblastí označeného Statický ... na formulář, nebo nastavením vlastnosti Statická na Ano u existující oblasti. Pro položky
vlastnící jenom statické oblasti se hodí Typ Prázdná, protože ji nikdy nechceme nechat uživatelem
vyplňovat. Všechny statické oblasti formuláře je možné seskupit do jediné položky (první vyrobíme normálně a před nakreslením další statické oblasti odškrtneme volbu Pokaždé vytvářet nové položky).
Tip
Pomocí statických oblastí je taktéž možné navrhnout celý vzhled papírového formuláře v případě, že nemáte jeho obrázkový podklad.
3.3.10. Knihovní funkce
Při psaní skriptů je možné používat funkce definované v předdefinovaných systémových balíčkách,
prozatím je v systému pouze jeden, a to number_utils.js, jehož obsah můžete nalézt v instalačním
adresáři aplikace ve složce sample/packages/. Tento balíček obsahuje mimo jiné i funkci pro převod
číselné hodnoty na řetězec, kterou použijeme pro vypsání údaje stipendium.
Pro použití balíčku jej musíme nejprve načíst, to se provádí v nástroji Ladění skriptů, kde na začátek
4
kódu napíšeme :
import Utils;
import Numbers;
Položka stipendium je vstupní, proto jí potřebujeme nastavit Textový výstup na program, který
bude převádět číslo (které má položka na vstupu) na textovou hodnotu. S pomocí knihovní funkce
Numbers.toName() je kód velmi jednoduchý:
= Numbers.toName(this.value());
Kompletní seznam všech knihovních funkcí je možné nalézt v 3.5.5 – „Seznam knihovních funkcí“
3.3.11. Uživatelské fuknce
Uživatelé mají možnost si definovat svoje vlastní funkce na globální úrovni v 3.3.5 – „Ladění skriptů“.
Takovouto funkci je možné definovat následujícím způsobem:
4
Při vytvoření prázdného dokumentu se první uvedený řádek vkládá vždy.
27
Návrhář formulářů
function text_concat(controls, separator) {
var result = "";
if (separator == undefined)
separator = " ";
for (var i in controls) {
result += controls[i].value() + separator;
}
return result;
}
V programech položek lze poté takto definovanou funkci zavolat stejně jako kteroukoli jinou funkci JavaScriptu, stačí zadat její jméno a do závorek parametry. Naši funkci pro konkatenaci řetězcových hodnot předaných položek použijeme například takto:
vsichni_zamestnanci.value = text_concat(skupina_zamestnancu.controls(), ", ");
Tímto kódem docílíme toho, že položka vsichni_zamestnanci bude nabývat textu odpovídajícímu
spojení hodnot všech položek ze skupiny skupina_zamestnancu pomocí oddělovače ", ".
3.3.12. Organizace položek do skupin
V seznamu Položky formuláře je možné vytvořené položky rozdělovat do skupin, aby se v nich dalo
lépe vyznat. Tím vznikne hierarchie položek a skupin, která nám kromě lepšího přehledu mezi položkami umožní například i iterací přes všechny položky ve skupině. Novou skupinu v seznamu vytvoříme
stiskem ikonky Vytvořit novou skupinu položek v záhlaví tohoto seznamu nebo v jeho kontextovém
menu. Tím nám vznikne nová skupina. Nově vytvořená položka je vždy umístěna do aktuálně vybrané
skupiny (popřípadě skupiny aktuální položky), které jsou v seznamu zvýrazněny tučně.
Označené existující položky můžeme v seznamu přesunout přetažením myší do jiné skupiny. Přenášené
položky lze pustit nad názvem skupiny, popřípadě mezi libovolnými dvěma jejími prvky.
V kapitole 3.3.5 – „Ladění skriptů“ jsme se zmínili o tom, že ve všech programech jsou položky přístupné
pouze plnými hierarchickými jmény. Tím pádem je nutné při přesunu položky do skupiny, přejmenování
položky nebo některé z jejích nadskupin upravit všechny programy, které se na ní odkazují. Toto naštěstí
nemusí dělat uživatel sám, v aplikaci funguje automatický refactoring kódu pouštěný vždy když
může dojít k zneplatnění některého programu.
Refactoring je možné vypnout v nastavení aplikace v záložce Základní nastavení, potom je potřeba
upravit programy ručně, což lze nejlépe provést v 3.3.5 – „Ladění skriptů“ v JavaScriptovém editoru
pomocí funkce nahrazení textu (CTRL+H).
3.3.13. Rozložení elektronického formuláře
V kapitole 3.2.3 – „Elektronický formulář“ jsme si ve zkratce představili, jak jednoduše navrhnout rozložení elektronického formuláře. V této kapitole se podíváme, jak se dá s tabulkou ovládacích prvků
pracovat a jak navrhnout formulář podobný tomu papírovému.
Po vytvoření vzhledu papírového formuláře (přidání všech možných položek) vidíme všechny vstupní
položky v levém sloupci. Naším cílem je všechny tyto položky přetáhnout na elektronický formulář (kde
z každé položky vznikne ovládací prvek a jeho popisek) a uspořádat je tam tak, aby se v takovýto formulář uživateli jednoduše vyplňoval. Tabulka, kde vzhled formuláře vytváříme, je rozdělena na jednotlivá políčka. Všechna políčka v jednom řádku mají vždy stejnou výšku, stejně tak jako políčka v jedno
sloupci mají stejnou šířku. Šířky sloupců a výšky řádků můžeme jednoduše upravovat v jejich záhlaví
(posunutím rozdělovací čáry). V tabulce je možné vytvářet větší pole obdélníkových tvarů pomocí spojování jednotlivých políček. Do každého takového pole pak můžeme umístit jeden ovládací prvek.
28
Návrhář formulářů
V tabulce se dá pracovat s výběrem polí, který má vždy obdélníkový tvar a je zobrazen modrou barvou,
viz 3.21 – „Uspořádání polí v tabulce pro návrh elektronického formuláře“. Vybrané pole jsou na obrázku
zvýrazněna modře, ovládací prvky mají žluté pozadí, popisky pak světle šedé. Bílé jsou prázdné buňky.
Obrázek 3.21. Uspořádání polí v tabulce pro návrh elektronického formuláře
Výběr lze vyrobit tažením myši přes všechna pole, která mají být vybrána, pokud první pole výběru
obsahuje nějaký ovládací prvek, pak musíte před začátkem výběru držet klávesu CTRL. Prosté tažení
myši, které začíná nad ovládacím prvkem je bráno jako jeho přesun. Takovýto výběr je možné přenést
na novou pozici (vložit do stejně velkého — co do počtu polí — obdélníku někde jinde), či jej vložit mezi
existující řádky. Ve výběrů může být libovolný počet ovládacích prvků. Celý výběr můžeme taktéž smazat
z kontextového menu vyvolaného nad jedním z vybraných polí, což vede k navrácení všech ovládacích
prvků z výběru do seznamu Ovládací prvky. Přes kontextové menu se dají slučovat a rozdělovat buňky
výběru.
Dvojklikem na ovládací prvek (nebo jeho popisek) dojde k zvýraznění obou částí prvku v tabulce a jeho
vlastnosti se zobrazí v seznamu Vlastnosti položek formuláře . V tomto seznamu pak lze měnit text
popisku a typ zobrazeného ovládacího prvku.
Spojováním políček do větších polí, přesouváním skupin ovládacích prvků a nastavením jim správných
popisků můžeme dosáhnout hezkého a uživatelsky přívětivého vzhledu formuláře. Návrhář formulářů
však nabízí ještě jednu možnost a to automatické vyrobení rozložení ovládacích prvků na elektronickém
formuláři v závislosti na rozložení oblastí vstupních položek na papírovém formuláři. Tento proces je
možné spustit klepnutím na ikonu
Vytvořit layout podle skenu ve chvíli, kdy v tabulce není žádný
ovládací prvek. Výše popsanými způsoby lze potom formulář doupravit.
3.3.14. Podpora ukládání dat v databázi
Data z formulářů lze kromě standardního textového formátu CSV ukládat taktéž do databáze. Pro přidání
definice databázového úložiště do formuláře budeme postupovat velmi podobně jako při přidávání CSV
úložiště popsaného v kapitole 3.2.4 – „Úložiště dat“. Po vytvoření úložiště s typem databáze přibyde
do formuláře další záložka, kde je možné upravit nastavení databázové tabulky, do které mají být data
ukládána. Po přidání všech vstupních položek do úložiště vypadá formulář jako na obrázku 3.22 –
„Nastavení databázového úložiště formuláře“.
29
Návrhář formulářů
Obrázek 3.22. Nastavení databázového úložiště formuláře
V současné verzi aplikace je ukládání možné pouze do jediné tabulky a podporovány jsou pouze databáze typu SQLITE, které nepotřebují žádný speciální ovladač ani externí hostitelskou aplikaci a fungují
na každém počítači. Nastavení databáze, zejména Jméno tabulky a Název primárního klíče,
je možné editovat v seznamu Vlastnosti kontejneru. Jména sloupců tabulky přiřazené k jednotlivým položkám formuláře poté ve střední části okna.
Po úspěšném vytvoření definice databázové tabulky je možné formulář uložit a vyexportovat pro Vyplňovač formulářů. Při exportu do projektu přidáme jedno úložiště pro nově vytvořenou definici databázového úložiště, v kolonce Název zvolíme interní název a do kolonky Absolutní cesta zadáme cestu
5
k souboru, ve kterém chceme databázi uchovávat . Po potvrzení exportu projektu je vytvořen, pokud
neexistoval, a zinicializován databázový soubor.
5
SQLITE databáze nejsou nic jiného, než obyčejné datové soubory, které podporují ukládání více tabulek. Každý soubor pak
představuje jednu databázi.
30
Návrhář formulářů
Obrázek 3.23. Export projektu s databázovým úložištěm
Ve Vyplňovači formulářů se poté s databázovým úložištěm pracuje úplně stejně jako s CSV úložištěm.
Do tabulky se dají přidávat nové záznamy, stávající upravovat popřípadě mazat. Nakonec je důležité
všechny provedené změny potvrdit uložením.
3.3.15. Formát dat v úložišti a elektronickém formuláři
V některých případech můžeme chtít některé hodnoty (datumy, Ano/Ne, reálná čísla) do úložiště ukládat
v jiném formátu, než je poté prezentujeme uživateli. K ovlivnění ukládání slouží vlastnosti zobrazené
v seznamech Vlastnosti kontejneru v každé z definic úložiště nebo elektronického formuláře. Tato nastavení je možné vidět na obrázku 3.24 – „Nastavení formátu ukládaných dat“.
Obrázek 3.24. Nastavení formátu ukládaných dat
Každé z těchto nastavení ovlivňuje způsob, jakým bude ukládán (nebo zobrazován) určitý datový typ
v celém úložišti (nebo elektronickém formuláři). Každá z položek, která jsou typu vyžadujícího nastavení
formátu, si pro sebe může nastavit formát vlastní. Ten pak bude použit při ukládání této položky místo
výchozího. Specifické formáty jednotlivých položek se dají nastavovat v seznamu Vlastnosti položek
formuláře, kde je vždy zobrazen jenom formát pro daný typ položky, pokud tuto vlastnost ponecháte
prázdnou, bude použit globální (kontejnerový) formát.
3.4. Další činnosti s formulářem
V této kapitole si popíšeme další netriviální akce, které je možné provádět s formulářem v aplikaci
Návrhář formulářů.
31
Návrhář formulářů
3.4.1. Nastavení dokumentu
V menu Formulář se nachází akce pro práci s formulářem, jako je přidávání nových stránek, přidávání
nových datových úložišť nebo definic elektronických formulářů. Pomocí volby Nastavení dokumentu
se otevře dialog 3.25 – „Nastavení tisku formulářů“ pro změnu globálních nastavení formuláře a jeho
stránek.
Obrázek 3.25. Nastavení tisku formulářů
Stránky je možné v jejich seznamu přesouvat (buďto tažením myši nebo přes kontextové menu), popřípadě úplně mazat z formuláře. Dvojitým poklepáním na obrazovku vstoupí uživatel do editačního módu
a může upravit velikost stránky. Změna velikosti stránky nijak nemění nastavení jejího obrázku. Změna
velikosti obrázku na pozadí stránky a jeho posun jsou popsány v kapitole 3.4.3 – „Kalibrace pozadí
stránky“. Časový limit skriptů ovlivňuje maximální povolenou dobu pro vyhodnocování všech programů
formuláře. Pokud trvá vyhodnocení déle, je skript ukončen a ne všechna data jsou dopočítána. Standardní velikost stránky určuje velikost stránek přidávaných do formuláře v mm. Jazykové nastavení slouží
jako výchozí nastavení pro formátování výstupních vzorů (datumů, čísel) ve formuláři při jeho tisku.
3.4.2. Doplnění detekovaných oblastí
Při přidávání stránky (3.2.1 – „Vytvoření formuláře“) a následné detekci oblastí se může stát, že nebudou
nalezeny všechny oblasti. V tuto chvíli se nám hodí spustit detekci oblastí pouze na malé části obrázku.
K tomuto účelu slouží nástroj Úpravy → Nástroje → Dodetekovat další oblasti , jehož spuštění nám
zakáže práci na všech ostatních stránkách a na aktuální mám vysvítí oblast, ve které má být provedena
detekce. Zároveň se nám zobrazí okno pro nastavení detekce, ve kterém jsou stejné možnosti jako při
běžné detekci popsané v kapitole 6 – „Detektor oblastí a rotace“.
Aplikace v tuto chvíli vypadá jako na obrázku 3.26 – „Náhled na vzorová data vyplněná v potvrzení
o studiu“.
32
Návrhář formulářů
Obrázek 3.26. Náhled na vzorová data vyplněná v potvrzení o studiu
Světle zvýrazněnou oblastí, kde má být provedena detekce, lze pohybovat chycením za nezvýrazněnou
oblast, Velikost zvýrazněné oblasti lze měnit po najetí myší nad jeden z jejích rohů. Náhled detekce je
možné zobrazit zaškrtnutím možnosti Zobrazit náhled detekce. Detekce oblastí se provede stisknutím
tlačítka Detekovat, které nejprve odstraní všechny staré detekované oblasti uvnitř zvýrazněného obdélníku, pokud je příslušné škrtátko zaškrtnuté, a poté zobrazí nově nalezené oblasti. Pokud se vám detekce nelíbí, můžete ji opakovat nebo vrátit změny zpět. Do standardního módu aplikace se dostanete
kliknutím na tlačítko Dokončit.
Nově nalezené detekované oblasti je možné převést na tiskové oblasti jedním ze způsobů popsaných
v 3.2.2 – „Tvorba formulářových polí“.
3.4.3. Kalibrace pozadí stránky
Po přidání obrázku formuláře na pozadí stránky je potřeba jej ještě zkalibrovat, to znamená nastavit
mu správnou velikost a pozici v rámci stránky, aby se vyplněné hodnoty tiskly do formuláře na správná
místa. Velikost obrázku se aplikace snaží zjistit z rozlišení obrázku a při přidávání stránky a provedení
prvotní detekce oblastí se dá nastavit pomocí kalibrační čáry. Ne vždy se toto však povede provést
přesně hned napoprvé. K opravě velikosti a určení pozice obrázku na stránce je proto v aplikaci nástroj
spustitelný přes Úpravy → Nástroje → Kalibrace velikosti a pozice pozadí stránky . Toto na aktuální
stránce schová všechny aktuální oblasti a zobrazí pouze obrázek na pozadí, pravítko a kalibrační čáru,
viz 3.27 – „Nástroj kalibrace velikosti a pozice pozadí stránky“.
33
Návrhář formulářů
Obrázek 3.27. Nástroj kalibrace velikosti a pozice pozadí stránky
Velikost obrázku lze nejlépe nastavit tak, že kalibrační čáru umístíte do dlouhého políčka (mezi dva
významné body na obrázku), poté změříte mezi těmito body vzdálenost v milimetrech na skutečném
papírovém formuláři a v okně Kalibrace pozadí stránky nastavíte hodnotu pole Délka čáry na změřenou vzdálenost. V tu chvíli se zobrazí přepočítané pravítko, změnu velikosti obrázku je pak nutné
potvrdit stiskem tlačítka Překalibrovat, čímž bude fyzicky změněna velikost obrázku (a ne jenom měřítka
stránky).
Umístění obrázku v rámci stránky se dá měnit jeho chycením myší přenesením na jinou pozici. K určování přesné pozice kurzoru myši slouží dvě červené čárky na pravítku a také hodnota Pozice vypsaná
na stavové liště programu. Nejpřesnějším způsobem umístění obrázku je změření pozice nějakého výrazného bodu na reálném papírovém formuláři, poté už stačí obrázek chytnout za tento bod a přenést
na jeho správnou pozici.
Poznámka
Pozici obrázku na stránce nastavujte až ve chvíli, kdy máte správně nastavenu velikost obrázku.
Pozici a velikost obrázku na stránce lze taktéž měnit v seznamu Vlastnosti oblasti tisku, položka Velikost
stránky tu má jen informativní charakter, nelze ji měnit. Změna velikosti stránky je možná v 3.4.1 –
„Nastavení dokumentu“.
Tlačítkem Dokončit uložíme nastavenou kalibraci, dojde tím k přepočtení pozice a velikosti všech oblastí
na stránce, aby zůstaly na stejných místech na obrázku. Tlačítkem Zrušit se zahodí všechny provedené
změny.
Poznámka
Během kalibrace pozadí není možné vracet změny zpět, pokud se vám něco nepovedlo, stačí
vyskočit z kalibračního módu a zase se do něj vrátit. Po dokončení kalibrace ji však už lze celou
vrátit zpět.
34
Návrhář formulářů
3.4.4. Znovuprovedení celé detekce
V kontextovém menu stránky (vyvolaném po zmáčknutí pravého tlačítka myši) naleznete možnost
Provést celou detekci znovu, která na dané stránce znovu spustí dialog pro detekci oblastí na stránce.
Toto se hodí, pokud jste obrázek na pozadí načetli přímo ze souboru a pak jste zjistili, že je trochu
natočený, popřípadě pokud chcete celou kalibraci a detekci provést znova.
V dialogu pro detekci oblastí na stránce 3.2 – „Dialog pro přidání stránky a detekci oblastí“ potom můžete
obrázek nechat natočit, překalibrovat a nechat nalézt oblasti. Po potvrzení stiskem tlačítka OK budou
odstraněny všechny předešlé detekované oblasti ze stránky, přidají se na ní ty nové a u tiskových oblastí
bude přepočtena jejich pozice.
Varování
Otočením obrázku tímto způsobem může dojít k nesprávnému posunu existujících tiskových
oblastí. Pokud v dialogu vyberete nový obrázek nebo stávající oříznete, pak dojde k posunu
oblastí zcela určitě a budete je muset později ručně narovnat na správná místa. Kompletní
překalibrování stránky doporučujeme provádět pouze na stránce bez tiskových oblastí, v jiných
případech používejte nástroje pro kalibraci nebo dodatečnou detekci popsané v předcházejících
kapitolách.
3.4.5. Převod všech detekovaných oblastí na položky
V případě, že máte na formuláři příliš mnoho detekovaných oblastí a chcete je všechny převést na formulářové položky a jejich tiskové oblasti, můžete využít dialogu vyvolaného ikonkou Převést všechny
zdetekované oblasti z nástrojové lišty aplikace nebo z kontextového menu stránky, na které jsou nějaké
detekované oblasti.
V dialogu 3.28 – „Dialog pro převod detekovaných oblastí na položky formuláře“ stačí vybrat jméno
položky, znak %1 bude nahrazen indexem vytvořené položky. Indexy budou začínat na hodnotě zadané
v políčku Číslo. Ze seznamu Typ vytvářených oblastí vyberte požadovaný typ všech vyráběných položek. Automatický výběr se řídí podle informací získaných z detekce oblastí.
Obrázek 3.28. Dialog pro převod detekovaných oblastí na položky formuláře
Převod oblastí je spuštěn po stisku tlačítka OK a v závislosti na počtu oblastí může trvat i několik sekund.
3.5. Manuál
V této kapitole naleznete podrobný popis položek formuláře a jejich vlastností, dále pak popis vlastností
tiskových oblastí a postup vyhodnocování programů položek pro lepší pochopení funkce aplikace. Dále
podrobný popis formátovacích vzorů a v závěru je pak přehled knihovních funkcí, které lze importovat
a používat v programech.
35
Návrhář formulářů
3.5.1. Položka formuláře
Položka formuláře je zřejmě nejdůležitější prvek při návrhu elektronického formuláře. Odpovídá jednomu textovému poli na papírovém formuláři. To znamená, že vše, co lze ve formuláři vyplnit by měla
reprezentovat nějaká položka formuláře. Pokud je na formuláři pole rozděleno na několik dalších, ale
přesto reprezentují jeden údaj, pak i tomu odpovídá jedna položka a skutečnost, že její výstup je v několika různých polích se řeší pomocí oblastí tisku. Typickým příkladem jsou různé formuláře, kde se
např. vyplňuje rodné číslo. Ačkoliv je číslo pouze jedno, zapisuje se do několika různých (zpravidla vedle
sebe umístěných) textových polí.
Aby bylo vyplňování elektronické podoby formuláře co nejpohodlnější, obsahuje každá položka mnoho
různých nastavení, které umí ovlivňovat její chování. Nejdůležitější nastavení je to, zda položku vyplňuje
přímo uživatel, nebo se její hodnota počítá automaticky na základě jiných položek. Pokud se hodnota
počítá automaticky, je možné zadat program, který její hodnotu spočítá. Proto je nutné aby každá položka měla unikátní identifikátor, pomocí kterého je možné se odkazovat na jeho hodnotu z jiných položek.
Nastavení je celá řada, ale některé závisí na tom, zda je je položka vstupní nebo se její hodnota počítá
automaticky. Vlastnosti společné pro oba typy jsou vidět na obrázku 3.29 – „Společná nastavení položky
formuláře.“.
Obrázek 3.29. Společná nastavení položky formuláře.
Identifikátor
Řetězec, který jednoznačně identifikuje položku v rámci jeho skupiny. Identifikátor musí být platný jako identifikátor v jazyce JavaScript, navíc je zakázáno, aby
identifikátor začínal nebo končil znakem _ nebo uvnitř obsahoval dva znaky __
vedle sebe.
Typ položky
Zde je možné vybrat jakého typu je údaj, který položka reprezentuje. Podporované typy jsou tyto:
Prázdný
Položka s prázdným typem nenese žádnou hodnotu. Takže jí
nemůže zadat uživatel a ani nelze spočítat z jiných položek.
Taková položka je vhodná použít jako schránka pro statické
tiskové oblasti. Položka není nijak přístupná z programů pro
výpočet hodnot.
Celé číslo
Položka obsahuje celé číslo.
Řetězec
Položka obsahuje textový řetězec.
Ano/Ne
Položka obsahuje buď logickou hodnotu ano nebo logickou
hodnotu ne.
Reálné číslo
Položka obsahuje reálné číslo.
Datum
Položka obsahuje datum. Tento typ je mapovaný na objekt
Date v JavaScriptu, ve kterém je čas nastaven na 00:00.
Čas
Položka obsahuje čas. Tento typ je mapovaný na objekt Date v JavaScriptu. Ve kterém je datum nastavené na 1. ledna
1970.
36
Návrhář formulářů
Datum a čas
Položka obsahuje datum i čas. Tento typ je mapovaný na objekt Date v JavaScriptu.
Měna
Položka obsahuje reálné číslo. Ve formátovacím vzoru je možné vypisovat měnu atd.
Procenta
Položka obsahuje procenta. Hodnota je zadávána uživatelem
přímo v procentech, pokud je ale hodnota čtena během výpočtů, je vrácena hodnota 100x menší, takže je možné tímto číslem rovnou násobit. Pokud je hodnota položky počítána automaticky, je výsledná hodnota při zobrazení násobena 100,
takže se zobrazuje opět v procentech.
Vstupní položka
Vstupní položka je taková, do které může uživatel zadávat vstup. Hodnota položka, která není vstupní se počítá automaticky pomocí programu, který musí být
v tomto případě vždy zadaný. Podle této volby se zpřístupní další možná nastavení.
Textový výstup
Zde se zadává program, který určuje, jakým způsobem se má převést hodnota
položky na text, který se bude tisknout do papírového formuláře. V tomto programu je možné odkazovat se na svoji vlastní hodnotu i na hodnoty ostatních
položek. Zároveň má každá položka metodu format, pomocí které je možné
velmi detailně popsat výsledný textový tvar hodnoty položky. Více o této metodě lze nalézt v kapitole 3.18 – „Návrhář formátovacích vzorů“. Program by měl
vracet textový řetězec. Pokud není zadán žádný program, je implicitně použito
= this.format("{value}");
Validita
Zde je možné zadat program, který ověří, zda je zadaná nebo spočítaná hodnota validní. V tomto programu je možné se odkazovat na svojí hodnotu pomocí
metody this.value() i na hodnoty ostatních položek. Program by měl vracet
buď true nebo false podle toho, zda je položka v pořádku nebo ne, případně
neprázdný řetězec, který může být zobrazen uživateli a který informuje o příčině
chyby.
Dostupnost dalších nastavení závisí na tom, zda je položka vstupní nebo je její hodnota počítána automaticky. Pokud je položka vstupní jsou navíc dostupné položky tak, jak je zobrazeno na obrázku 3.30
– „Nastavení vstupní položky“
Obrázek 3.30. Nastavení vstupní položky
Výběr z možností
Tato volba určuje, jestli vstup může obsahovat pouze určitou množinu hodnot. V takové situaci je lepší zobrazit např. rozbalovací seznam a v něm výčet těchto hodnot. Pokud položka může obsahovat pouze výčet hodnot, je
logicky znepřístupněná možnost nastavit program pro kontrolu validity.
Dostupnost
Zde je možné zadat program, který určuje, zda je položka přístupná k vyplnění uživatelem nebo ne. Toto nastavení má význam např. když po vyplnění
nějaké hodnoty ztratí význam vyplňování nějaké jiné. Např. pokud uživatel
zaškrtne, že je muž, nemá význam, aby mohl vyplnit položku rodné příjmení.
Program by měl vracet pouze hodnoty true nebo false.
37
Návrhář formulářů
Implicitní hodnota
Zde je možné vyplnit program, který vrátí hodnotu, která má být čtena v případě, že položka není vyplněna. Tímto způsobem je možné řešit např. situaci, kdy se počítá součet hodnot v deseti položkách, ale přitom není nutné
všechny vyplňovat. Přesto by se součet měl spočítat korektně. Řešením je
nastavit těmto položkám implicitní hodnotu na = 0; Implicitní hodnoty se netisknou a ani je nelze přečíst metodou value v programu pro textový výstup.
Program by měl vracet hodnotu, která svým typem odpovídá typu položky.
Výchozí hodnota
Program pro výchozí hodnotu určuje, jakou hodnotu bude mít položka při
vyplňování nového prázdného formuláře. Toho lze dobře využít např. tehdy,
když má položka obsahovat aktuální datum. Pokud nechceme uživatele nutit,
aby tuto položku musel stále vyplňovat, je možné nastavit program na = new
Date();
Hodnoty
Pokud položka může obsahovat pouze určitou množinu hodnot, pak je toto
nastavení dostupné. Měl by zde být program, který vrací pole s přístupnými
hodnotami. Hodnoty by měly být stejného typu jako je typ položky.
Pokud má položka hodnotu počítanou pomocí programu, má oproti společným nastavením dostupné
navíc jediné nastavení.
Obrázek 3.31. Nastavení počítané položky
Hodnota položky
Zde musí být uvedený program, který spočítá hodnotu položky na základě hodnot
jiných položek. Vrácená hodnota musí mít stejný typ jako typ položky.
3.5.2. Oblast tisku
Oblast tisku odpovídá místu na formuláři, kde se má tisknout textový nebo čárový výstup. Každá položka
formuláře může obsahovat libovolný počet oblastí tisku. Tyto oblasti se pak starají o grafický výstup
položky. Před tiskem jsou vždy vyhodnoceny formátovací vzory položek formuláře a tak je získán jejich
textový výstup. Tento textový výstup se pak distribuuje jednotlivým oblastem. Každá oblast si z výstupu
může převzít ke zpracování určitou část a poslat nezpracovaný zbytek zbývajícím oblastem. Takto je
možné snadno vyplňovat např. formuláře, kde se text zadává po znacích. Každému políčku odpovídá
jedna oblast a každá z oblastí si vezme ke zpracování jeden znak. Nebo pokud je nějaká položka na
formuláři rozdělená na více stránek, je možné udělat pro každou stránku vyrobit jednu oblast a nastavit
jejich chování tak, aby se obsah, který se nevešel na první stránku, poslal do oblasti na další stránce atd.
Nastavení oblasti tisku
Každá tisknutelná oblast má několik nastavení. Bez ohledu na typ, má každá oblast první tři nastavení
dostupná.
Obrázek 3.32. Společná nastavení tiskových oblastí
38
Návrhář formulářů
Pozice
Toto nastavení určuje pozici oblasti na papírové předloze. Zadává se pozice levého
horního rohu a její velikost v milimetrech.
Statická
Statická oblast nezpracovává obsah, který dostane od formulářové položky, ale má
svůj předdefinovaný obsah. Tento obsah je možné zadat rovnou v editoru. Tento typ
oblasti se hodí v případě, že se má na určitém místě vždy vytisknout zadaný text
případně grafický útvar.
Typ oblasti
Toto nastavení určuje, zda bude výstupem oblasti text nebo grafický útvar jako křížek,
čára atd.
Text
Tento typ oblasti očekává, že od rodičovského formulářového prvku
dostane textový obsah, který bude vytištěn. Pro oblast toho typu je
dostupné velké množství dalších nastavení.
Zaškrtávání
Tento typ oblasti očekává, že rodičovský formulářový prvek je buď
typu Ano/Ne nebo že tento prvek vrací textový obsah. Pokud prvek
vrací textový obsah, pak z tohoto obsahu odebere jeden znak, ze
kterého oblast odvodí svůj tvar.
Pokud je statická oblast typu Text nebo typu Zaškrtávání a tvar má určený znakem. Pak se zpřístupní
položka pro nastavení textové hodnoty. Pokud je statická oblast typu Zaškrtávání a tvar jednoznačně
daný, považuje se za její hodnotu implicitně Ano.
Hodnota
Určuje textovou hodnotu statické oblasti.
Přítomnost dalších nastavení je podmíněna tím, jakého typu daná oblast je.
Nastavení oblasti tisku typu text
Pokud je oblast tisku typu text, pak jsou dostupná další nastavení tak, jak je zobrazuje obrázek 3.33
– „Nastavení oblasti typu text“.
Obrázek 3.33. Nastavení oblasti typu text
Písmo
Toto nastavení určuje jakým fontem a jakou velikostí písma bude textový výstup vytištěn. Velikost písma je zobrazována rovněž v milimetrech.
Víceřádkový text
Pokud je oblast víceřádková, tak pokud se textový obsah nevejde na
jeden řádek, bude text zalomen a výstup bude pokračovat na dalším
řádku. Počet řádků je limitován výškou oblasti. Pokud oblast více řádková není, tak se vytiskne buď první řádek obsahu nebo taková část
prvního řádku, která se do oblasti vejde bez zalomení. Detailní chování
ovlivňuje nastavení Přetečení.
Kapacita
Toto nastavení ovlivňuje jak velký kus z textového obsahu, který rodičovský formulářový prvek oblasti poskytl, oblast použije než předá dál
zbytek obsahu. Povolené jsou následující hodnoty:
39
Návrhář formulářů
Znaky
Oblast vždy ze začátku obsahu použije zvolený počet
znaků (včetně mezer atd.)
Slova
Oblast vždy ze začátku obsahu použije zvolený počet
slov. V nastavení Oddělovač lze nastavit znak, který odděluje jednotlivá slova. Prázdná slova jsou rovněž počítána do počtu. Na výstupu jsou slova oddělená mezerou.
Prázdná slova se do výstupu nezapisují. Při načtení slova je z obsahu odstraněn i oddělovač, který jej odděluje
od zbytku obsahu.
Řádky
Oblast vždy ze začátku obsahu použije zvolený počet
řádků. Prázdné řádky jsou rovněž počítány do počtu a na
rozdíl od předchozí volby jsou i prázdné řádky vypsány
do výstupu.
Vše
Oblast se pokusí použít celý obsah. Detailní chování
ovlivňuje nastavení Přetečení.
Oddělovač
Toto nastavení určuje znak, který se má použít jako oddělovač při načítání slov. Nastavení je dostupné pouze
v případě, že nastavení Kapacita je nastaveno na volbu
Slova.
Počet prvků
Význam a dostupnost tohoto nastavení závisí na nastavení Kapacita.
Pro Znaky toto nastavení určuje, kolik znaků je z předaného textu použito, pro Slova nastavení určuje, kolik slov je z textu použito, a pro
Řádky určuje počet řádek. Pro Vše toto nastavení není dostupné.
Horizontální zarovnání
Udává horizontální zarovnání vykresleného obsahu. Možné hodnoty
jsou tyto:
Vertikální zarovnání
Odsazení
Doleva
Obsah je vždy zarovnán k levému okraji.
Na střed
Obsah je vždy zarovnán na střed.
Doprava
Obsah je vždy zarovnán k pravému okraji.
Do bloku
Každý řádek je zarovnán tak, aby začínal u pravého okraje a končil u okraje levého. Pokud řádek obsahuje pouze
jedno slovo nebo je řádek ukončen znakem konce řádku
a nikoliv zalomením, pak je řádek zarovnán doleva.
Tato nastavení určuje vertikální zarovnání obsahu. Možné hodnoty jsou
tyto:
Nahoru
Obsah je vždy zarovnán k hornímu okraji.
Na střed
Obsah je vždy zarovnán na střed.
Dolů
Obsah je vždy zarovnán k dolnímu okraji.
Udává, jak daleko v milimetrech je obsah od okrajů oblasti vykreslován.
Toto nastavení je užitečné tehdy, když jsou pozice a velikostoblasti nastavené tak, že přesně odpovídají textovým polím na papírovém formuláři. V tuto chvíli je zpravidla nežádoucí, aby se textový obsah přesně dotýkal okrajů těchto polí. Nastavení odsazení umožňuje zaručit, že
obsah bude nejméně o tuto hodnotu od okrajů vzdálen. Hodnota může
být i záporná. Pak se obsah vykresluje i vně oblasti.
40
Návrhář formulářů
Šířka tabulátoru
Udává maximální šířku tabulátoru. Znak tabulátor je interpretovaný tak,
že se nalezne nejbližší vyšší násobek šířky tabulátoru následující za
posledním znakem před tabulátorem a další obsah pak pokračuje na
této pozici. Toto chování umožňuje snadno zarovnávat určité texty do
stejného sloupce. Jednotkou je šířka jedné mezery zvoleného fontu.
Přetečení
Toto nastavení ovlivňuje chování v případě, že se zpracovávaný obsah
nelze zvoleným fontem vykreslit do oblasti. Nastavení může nabývat
těchto hodnota:
Přetéct
Zpracovávaný obsah je vykreslen celý.
V případě, že je oblast víceřádková, ignoruje se podle podle nastavení Vertikální zarovnání buď dolní, horní nebo dolní
i horní okraj oblasti. V případě, že je oblast
jednořádková, ignoruje se podle nastavení Horizontální zarovnání pravý, levý nebo
pravý i levý okraj oblasti.
Změnit font
Velikost fontu je zmenšena tak, aby se celý
zpracovávaný obsah do oblasti vešel. Font
je zmenšován po 10% původní velikosti.
Pokud se ani při 10% původní velikosti obsah nevejde, je zbytek poslán do další oblasti.
Přebytek poslat dál
Obsah, který se nevejde do oblasti, je poslán do další oblasti.
Nastavení oblasti tisku typu zaškrtávání
Oblast typu zaškrtávání slouží k netextovému grafickému výstupu. Hodí se u položek, kdy není třeba
vyplňovat textovou hodnotu, ale stačí např. něco přeškrtnout, zakroužkovat, podtrhnout atd. Pokud je
vlastnící formulářová položka typu Ano/Ne, pak je význam jasný. Zvolený útvar se buď vykreslí, nebo
nevykreslí. Pokud má položka textový výstup, je chová se oblast jako textová oblast, která zpracovává
jeden znak. Tento znak načte a podle jeho hodnoty vykreslí příslušný útvar. Pokud je zpracovávaný znak
mezera, žádný výstup je nevykreslí. Takto může jedna položka ovládat několik zaškrtávacích oblastí
najednou.
Dostupná nastavení pro oblast typu typu zaškrtávání jsou zobrazena na obrázku 3.34 – „Nastavení
oblsti typu zaškrtávání“
Obrázek 3.34. Nastavení oblsti typu zaškrtávání
Styl oblasti
Určuje tvar, který je vykreslen v případě, že má být oblast zaškrtnuta. Možné hodnoty jsou tyto:
Určeno znakem
V tomto případě je tvar určen prvním znakem, který
rodičovský formulářový prvek oblasti předal. Každému způsobu zaškrtnutí odpovídá jeden znak. Tyto
znaky jsou popsány níže. Pokud znak žádné z mož-
41
Návrhář formulářů
ností neodpovídá, je oblast považována za nezaškrtnutou. Vlastnící formulářová položka musí mít
v tomto případě vyplněný program pro formátovací
vzor.
Tloušťka čáry
Zaškrtnutí
Odpovídá znaku X. V oblasti je vykreslen křížek vedoucí z levého horního rohu do dolního pravého
a z levého horního rohu do pravého horního.
Podtržení
Odpovídá znaku _. Přes dolní okraj je vykreslena
vodorovná čára.
Vodorovné přeškrtnutí
Odpovídá znaku -. Je vykreslena vodorovná zleva
doprava uprostřed oblasti.
Svislé přeškrtnutí
Odpovídá znaku |. Je vykreslena svislá čára shora
dolů uprostřed oblasti.
Šikmá čára dolů
Odpovídá znaku \. Je vykreslena čára z levého horního rohu do pravého dolního.
Šikmá čára nahoru
Odpovídá znaku /. Je vykreslena čára z levého dolního rohu do pravého horního.
Zakroužkování
Odpovídá znaku O. Je vykreslena elipsa, která se
dotýká všech stran oblasti.
Obdélník
Odpovídá znaku #. Je vykreslen obdélník se stranami na hranách oblasti.
Udává šířku čáry v milimetrech s jakou je útvar vykreslen.
3.5.3. Vyhodnocování programů položek formuláře
Aby uživatel mohl plně a správně využít možností, které nabízí definování vlastního chování položek
formuláře, je nutné vysvětlit, jak přesně vyhodnocování programů probíhá a jaké konstrukce je možné
použít.
V programech by se neměly používat identifikátory, které začínají na dvě podtržítka. Veškeré pomocné
funkce a proměnné, které jsou nutné pro vyhodnocování programů totiž takto začínají a kolize jmen by
mohla mít nepříjemné následky. Jinak žádná jiná omezení nejsou a v programech lze použít všechny
konstrukce, které povoluje jazyk JavaScript.
V každém programu je možné získávat hodnoty jiných položek. Jména položek jsou hierarchická a odpovídají přesně systému skupin položek. Takže položka polozka1 ve skupině skupina1 je přístupná
jako skupina1.polozka1. Každá skupina kromě kořenové má metodu controls, která vrací pole
všech svých položek (kromě prázdných) a metodu groups, která vrací seznam pole všech svých podskupin.
Metoda value existuje pro každou položku a vrací její hodnotu. Tato hodnota nemusí být nutně ta,
kterou zadal uživatel. Pokud uživatel žádnou hodnotu nezadal může být vrácena implicitní hodnota
položky. V případě položek typu procenta pak vrací hodnotu 100krát menší, než kterou uživatel zadal.
Jediná možnost, jak se dostat ke skutečné hodnotě, kterou uživatel zadal je metoda this.value,
která je přístupná pouze v programu pro kontrolu validity. Pokud není položka dostupná k vyplňování
a existuje její implicitní hodnota, pak je tato hodnota vrácena. Pokud v této situaci implicitní hodnota
neexistuje, pak se položka při čtení chová jako nevalidní.
Metoda valid vrací pouze true nebo false podle toho, zda je položka validní či nikoliv. Vrácená hodnota nemusí být shodná s tím, co vrátil program pro kontrolu validity. Pokud tento program vrátil řetězec
(což indikuje nevalidní položku) pak tato metoda vrací pouze false. Rovněž vrací false, pokud uživatel
42
Návrhář formulářů
zadal hodnotu, kterou se nepodařilo převést na typ vyžadovaný položkou. Každá položka, která během
výpočtu své hodnoty nebo validity četla hodnotu nevalidní položky je rovněž označená za nevalidní.
Metoda available pak vrací, zda je položka dostupná pro vyplňování. Položky, které nejsou vstupní
vždy vrací true.
Metoda index je platná pro položku s výčtem povolených hodnot. Vrací index té hodnoty v seznamu
povolených hodnot, která je právě zadána. Položky jsou číslovány od nuly. Pokud metoda vrací záporné
číslo, není žádná platná hodnota vybrána.
Pořadí vyhodnocování
Důležité je rovněž pořadí, ve kterém se programy vyhodnocují. Programy se vyhodnocují vždy po položkách. Takže pokud během výpočtu je požadována hodnota jedné z metod value, valid nebo available je tato položka celá vyhodnocena a teprve poté je vrácena požadovaná hodnota. Tato skutečnost
tak nepřímo zakazuje volat tyto metody na sobě při výpočtu své vlastní hodnoty. Takové volání by vedlo
k chybě Cyklická závislost. Jediný program, ve kterém dává smysl číst svojí vlastní hodnotu, je program
pro kontrolu validity. V něm lze vlastní hodnotu bez nebezpečí zacyklení číst již výše zmíněnou metodou
this.value tyto hodnoty se ale mohou lišit, neboť tato metoda metoda vrací to, co zadal uživatel,
případně implicitní hodnotu. Pokud ale program označí položku za nevalidní, pak všichni ostatní tuto
hodnotu budou číst jako nevalidní.
Položky se tedy vyhodnocují v tom pořadí, v jakém jsou potřebné jejich výsledky pro výpočty jiných
položek. Pokud některá položka závisí na jiné a ta i třeba nepřímo závisí na té první, je detekována cyklická závislost a program dále nemá definované chování. Výpočet sice normálně skončí, ale poskytnuté
výsledky nebudou logicky správné. Tato chyba, ale znamená sémantickou chybu v návrhu programu
a při vyplňování dobře navrženého formuláře tato chyba nikdy nenastane.
Ale i vyhodnocování programů v rámci jedné položky má pevně dané pořadí. Nejdříve se spočítá program pro výpočet implicitní hodnoty. Následně se vyhodnotí program pro výpočet dostupnosti položky.
Poté je vyhodnocen program pro výpočet množiny povolených hodnot položky. Následně je spočítána
hodnota položky. Pokud je položka vstupní, je provedeno čtení hodnoty ze vstupu, pokud vstupní není,
vyhodnotí se program pro výpočet hodnoty. Pokud nastane chyba (např. čtení hodnoty nevalidní položky) je i tato položka označena za nevalidní. Pokud čtení hodnoty ze vstupu vrátilo prázdnou hodnotu
a neexistuje implicitní hodnota položky, je rovněž označena za nevalidní. Pokud je hodnota úspěšně
spočítána a hodnota je stále validní, spustí se vyhodnocení programu pro kontrolu validity. Pokud program vrátí false nebo chybovou hlášku je položka označena za nevalidní. Pokud během vyhodnocení
nastane chyba, je položka rovněž označena jako nevalidní.
Důležité je to, že během vyhodnocování se vytváří graf datových závislostí mezi položkami. Pokud
pak dojde ke změně hodnot jedné z položek, tak jsou hodnoty všech položek, které někdy použily její
hodnotu při vlastním výpočtu znovu přepočítány.
Trochu bokem stojí program, který počítá textový výstup položky. Tento program se vyhodnocuje pouze
jednou a to při zobrazení náhledu případně při tisku. V tomto programu je možné číst hodnoty jiných
položek pomocí metody value, pro výčtové položky je možné volat metodu index. Hodnotu každé
položky je možné formátovat pomocí metody format. Více o této metodě je možné zjistit v kapitole
3.5.4 – „Formátovací vzory“.
Rovněž výpočet programu pro výchozí hodnotu položky se vyjímá těmto pravidlům. Tento program je
totiž vyhodnocen pouze jednou a to při prvním zobrazení formuláře. Vyhodnocuje se ještě dříve, než je
vytvořen objektový model položek, takže není možné volat žádnou z metod položek.
3.5.4. Formátovací vzory
Form Tools nabízí poměrně bohaté možnosti, jak převádět hodnotu formulářových položek na textovou
reprezentaci. V programu pro textový výstup každé položky je možné na každé položce zavolat metodu
format. Ta má dva parametry, pattern a nepovinný parametr locale, který určuje pro jaké národní
prostředí bude vzor vyhodnocen. Protože správné nastavení parametrů je poměrně pracné, existuje
43
Návrhář formulářů
dialog Návrhář formátovacích vzorů viz 3.18 – „Návrhář formátovacích vzorů“, který odstraní nutnost
znát jakékoliv konkrétní detaily a umožní nastavit parametry snadno, dle přání uživatele.
Parametr locale může obsahovat buď hodnotu „default“, kdy se použije národní prostředí, které je
nastavené jako implicitní pro dokument, „system“, kdy se použije systémové nastavení uživatele nebo řetězec ve tvaru „jazyk_země“, kde jazyk jsou dvě malá písmena anglické abecedy, která udávají
kód jazyka podle ISO 639 (http://www.w3.org/WAI/ER/IG/ert/iso639.htm). „země“ je pak tvořena dvěma velkými znaky anglické abecedy, které udávají kód země podle ISO 3166 (http://www.iso.org/iso/
english_country_names_and_code_elements).
Parametr pattern tvoří samotný zápis toho, jak má textový výstup vypadat. Jedná se o řetězec který
může obsahovat podvzory je tvaru „{část[;atribut1:hodnota1;atribut2:hodnota2;...]}“. Všechno, co nepatří do podvzoru je přímo okopírováno na výstup. Podvzory jsou vyhodnoceny a jejich výsledek je vložen
do textového výstupu. Pokud je nutné v textu zadat znak {, je možné před tento znak dát \.
Položka „část“ v podvzoru určuje, s jakou částí hodnoty se bude pracovat. Např. datový typ datum má
části „day“, „month“, „year“ atd. Atributy podvzoru pak přesně určují jakým způsobem bude vybraná
část zformátovaná.
Následující seznam určuje pro každý datový typ položky všechny části, které jsou pro něj použitelné.
Jméno každé části, atributu i některé hodnoty mohou být zadány buď plný jménem nebo zkráceným.
Proto jsou občas uvedena dvě jména. První odpovídá plnému jménu a druhé v závorce zkrácenému.
Celé číslo
Pro tento datový typ je přípustná pouze tato část:
value
v
Řetězec
Vrací hodnotu čísla.
Pro tento datový typ je rovněž přípustná pouze jedna část:
value
v
Vrací hodnotu řetězce.
Ano/Ne
Pro tento datový typ je přípustná pouze část „value“ (zkráceně „v“). Tato část by
měla být doplněna minimálně o atribut styl, který udává tvar obrazce, který má
být nakreslen.
Reálné číslo
Pro tento datový typ jsou přípustné tyto části:
Datum
value
v
Vrací hodnotu čísla.
fraction
f
Vrací desetinnou část čísla.
integer
i
Vrací celou část čísla.
Pro tento datový typ jsou přípustné tyto části:
day
d
Vrací číslo dne v měsíci.
month
m
Vrací číslo měsíce.
year
y
Vrací číslo roku.
year2
y2
Vrací číslo poslední dvě číslice roku.
44
Návrhář formulářů
Čas
century
ce
Vrací první dvě číslice roku.
value
v
Vrací řetězec, který obsahuje zformátované datum
podle nastaveného národního prostředí. Detailnost
lze ovlivnit atributem „ style “ a hodnotou „ short “
Pro tento datový typ jsou přípustné tyto části:
hour
h
Vrací hodinu.
minute
mm
Vrací minuty.
second
s
Vrací sekundy.
millisecond
ms
Vrací milisekundy.
ampm
ap
Vrací řetězec podle toho, zda je čas dopoledne nebo odpoledne. Délku řetězce lze ovlivnit atributem „
style “ a hodnotou „ short “
hour-real
hr
Vrací počet hodin včetně minut, sekund i milisekund
jako reálné číslo.
minute-real
mmr
Vrací počet minut v hodině včetně sekund i milisekund jako reálné číslo.
second-real
sr
Vrací počet sekund v minutě včetně milisekund jako
reálné číslo.
hour12
h12
Vrací hodinu jako číslo mezi 1 a 12.
minute-total
mmt
Vrací počet minut od začátku dne.
second-total
st
Vrací počet sekund od začátku dne.
millisecond-total
mst
Vrací počet milisekund od začátku dne.
value
v
Vrací řetězec, který obsahuje zformátovaný čas
podle nastaveného národního prostředí. Detailnost
lze ovlivnit atributem „ style “ a hodnotou „ short “
Datum a čas
Pro datový typ Datum a čas jsou přípustné všechny části, které jsou přípustné
pro typ Datum a typ Čas .
Měna
Pro tento datový typ jsou přípustné stejné části jako pro datový type Reálné číslo
navíc je povolena část:
currency
c
Procenta
Vrací jméno měny.
Pro tento datový typ jsou také přípustné stejné části jako pro datový type Reálné
číslo ale navíc je povolena část:
45
Návrhář formulářů
precent
%
Vrací znak % podle nastavení národního prostředí.
Seznam atributů a jejich možných hodnot je zde uveden spíše pro úplnost. Lépe je použít Návrháře
formátovacích vzorů, kde se vždy zobrazí seznam všech povolených atributů, jejich hodnot i náhled na
výsledek. Každý atribut má svojí danou implicitní hodnotu, která se použije, pokud atribut není vůbec
uveden.
width
w
Hodnotou tohoto atributu může být libovolné kladné číslo menší než
1000000. Udává jakou minimální šířku ve znacích má mít výstup podvzoru. Pokud je délka výstupu kratší než hodnota atributu, je dorovnaná na
na požadovanou délku tím, že se před řetězec vloží odpovídající počet
opakování hodnoty atributu „ padding “. Implicitní hodnota atributu je 0.
padding
p
Hodnota atributu určuje řetězec jehož opakováním se výstup zarovná na
požadovanou minimální délku. Implicitní hodnotou je znak mezera.
precission
pr
Hodnotou atributu může být celé nezáporné číslo menší než 10. Toto číslo
má smysl pro reálná čísla a určuje kolik desetinných míst se má vypsat.
Skutečnou podobu výstupu pak ovlivňuje i atribut „ style “, který upřesňuje,
co se má stát, pokud číslo má méně než požadovaný počet desetinných
míst. Dále je možné zadat hodnotu „locale“ (zkráceně „?“), kdy se použije
počet míst podle nastaveného národního prostředí. Tato hodnota má smysl u měny, kdy některé měny jsou děleny na 100 a některé na 1000 dílčích
jednotek. Implicitní hodnota atributu je „default“, která je rovna číslu 6.
group-separator
gs
Hodnotou atributu je řetězec, který je vložen mezi každou trojici číslic v celé části. Je možné zadat libovolný řetězec nebo hodnotu „locale“ (zkráceně „?“), kdy se použije oddělovač podle nastaveného národního prostředí. Implicitní hodnotou je prázdný řetězec, takže žádný oddělovač použit
není.
decimal-separator
ds
Tento atribut určuje, který znak se použije jako oddělovač desetinné a celé
části čísla. Opět je možné zadat libovolný řetězec nebo hodnotu „locale“
(zkráceně „?“), kdy se použije oddělovač podle nastaveného národního
prostředí. Implicitní hodnotou je „locale“ tedy oddělovač podle nastaveného prostředí.
style (s)
Tento atribut určuje jakým stylem se hodnota části vypíše. Pro některé
hodnoty samozřejmě některé styly nedávají smysl. Implicitní hodnotou
atributu je „ default “ Atribut může nabývat jedné z těchto hodnot:
default
Vrátí normální reprezentaci hodnoty. Tj. číslo
jako číslo, řetězec jako řetězec. Typy Datum,
Čas a Datum a čas Pro typ Ano/Ne vrací bez
ohledu na hodnotu znak mezera.
all-digits
ad
Budou vypsána všechna desetinná místa až
do zadané přesnosti. Např. číslo „1,2“ s přesnost „3“ bude vypsáno jako „1,200“ místo
„1,2“.
name
n
Hodnota bude vypsána jménem. Např. den
nebude vypsán jako číslo, ale jménem dne
v týdnu.
short
s
Podobné jako atribut „ name “, jenom se použije kratší varianta jména. Např. místo „úterý“
bude vypsáno pouze „út“.
46
Návrhář formulářů
roman
R
Číslo bude vypsáno v římské soustavě. Pokud je záporné nebo větší než 4000, je vypsáno normálně. Číslice jsou psány velkými
písmeny.
roman-small
r
Stejné jako „ roman “ s tím rozdílem, že číslice
jsou psány malými znaky.
ISO
i
Podobné jako „ roman “ jenom se použije
standardizované jméno. Např. místo „Kč“ se
vypíše „CZK“.
circle
o
Vrátí znak O, pokud je hodnota rovna true.
cross
x
Vrátí znak X, pokud je hodnota rovna true.
box
#
Vrátí znak #, pokud je hodnota rovna true.
diagonal-down
\\
Vrátí znak \, pokud je hodnota rovna true.
diagonal-up
/
Vrátí znak /, pokud je hodnota rovna true.
underline
_
Vrátí znak _, pokud je hodnota rovna true.
dotline
.
Vrátí znak ., pokud je hodnota rovna true.
3.5.5. Seznam knihovních funkcí
Při programování položek se občas hodí mít k dispozici předpřipravené funkce, které implementují nejčastěji prováděné operace. Tyto funkce jsou implementované v tzv. balíčcích, které je nutné nejdříve
importovat a teprve poté je možné volat funkce z toho balíčku. Pro import balíčku je použito klíčové
slovo import následované jménem balíčku, takže například import Utils;. Je důležité zmínit, že
nejdříve musí být uvedeny všechny importy a teprve pak je možné psát samotný kód.
Je dobré vědět, že import balíčku způsobí zvětšení velikosti Javascriptového kódu při exportu do HTML
nebo PHP. Proto není rozumné importovat balíčky, jejichž funkce se nepoužívají.
Utils
Tento balíček obsahuje nejčastější funkce a při vytvoření nového dokumentu je tento balíček automaticky importován. V tomto balíčku se nacházejí následující funkce:
Utils.sum(controls)
Tato funkce očekává jako parametr pole položek a vrátí součet jejich hodnot. Pokud je tedy potřeba sečíst např.
všechny hodnoty v nějaké skupině, je možné napsat =
Utils.sum(skupina.controls());
Utils.avg(controls)
Tato funkce se chová stejně jako Utils.sum(controls) s tím
rozdílem, že výsledek je vydělen počtem vstupním položek.
Utils.notEmpty(string
[, message])
Tato funkce otestuje, zda není vstupní řetězec prázdný a pokud ano
vrátí hodnotu řetězce message. Pokud tento parametr není zadaný,
vrátí se řetězec „Hodnota nesmí být prázdná“.
47
Návrhář formulářů
Tato funkce lze šikovně použít v programu pro validaci položky. Pokud vstup nesmí být prázdný, je možné napsat =
Utils.notEmpty(this.value());.
Utils.mask(symbol, length, index [, padding])
Funkce vygeneruje řetězec délky length, který je vyplněn znaky
padding. Na pozici index je na závěr vložen symbol symbol. Pokud parametr padding není zadaný, použije se mezera.
Tato funkce je velmi vhodná při práci s oblastmi typu zaškrtávání. Pokud např. je možné zakroužkovat některou z víc možností, je možné
vytvořit položku výčtového typu, do ní vložit odpovídající oblasti typu zaškrtávání jejichž tvar je určen znakem. Do programu textového
výstupu se pak napíše pouze = Utils.mask("O", počet oblastí, this.index()); a vždy bude zakroužkovaná správna
možnost.
Numbers
Tento balíček obsahuje funkce pro práci s čísly. V současnosti obsahuje jedinou funkci.
Numbers.toName(number)
Vrátí zadané číslo jako řetězec napsaný v aktuálním jazyku. Např.
číslo 123 je vráceno jako "sto dvacet tři".
Excel
Tento balíček obsahuje funkce Excel.IF, Excel.AND, Excel.OR a Excel.NOT které poskytují stejnou funkčnost jako odpovídající funkce v programu Microsoft Excel™
48
Kapitola 4. Vyplňovač formulářů
Vyplňovač formulářů slouží k vyplňování formulářů vyexportovaných z aplikace Návrhář formulářů. Druhou schopností vyplňovače je správa pořízených dat, jejich úpravy a tisk.
4.1. Otevření projektu ve Vyplňovači formulářů
Práci s aplikací si ukážeme v krátkém tutoriálu. Budeme pracovat na jednoduchém formuláři pro
potvrzení o studiu, který jsme si vytvořili v kapitole 3.2 – „Tutoriál“ v nápovědě k aplikaci Návrhář
formulářů. Pokud nechcete procházet tímto průvodcem, naleznete připravený projekt pro Vyplňovač
formulářů v instalační složce aplikace v adresáři sample/potvrzeni-simple/. Pokud používáte
operační systém MS Windows, můžete formulář k vyplňování (soubor sample/potvrzeni-simple/potvrzeni_simple.fts) otevřít prostým spuštěním. V ostatních případech spusťte program
Filler a v něm zvolte Soubor → → Otevřít a poté nalistujte výše zmíněný soubor.
4.2. Vyplňování dat
Po otevření formuláře se zinicializuje hlavní okno aplikace, které je rozděleno na dvě části, jak ukazuje
4.1 – „Prázdný formulář potvrzení o studiu ve Vyplňovači formulářů“.
Obrázek 4.1. Prázdný formulář potvrzení o studiu ve Vyplňovači formulářů
V horní části aplikace je dokovací (přesouvací) okénko zobrazující elektronickou podobu formuláře, jak
jsme ji nadefinovali v kroku 3.2.3 – „Elektronický formulář“. Ve spodní části jsou záložky s jednotlivými
49
Vyplňovač formulářů
datovými úložišti otevřeného formuláře (my jsme při exportu formuláře vytvořili pouze jedno). Každý
zdroj dat je reprezentovaný tabulkou, kde v každém řádku jsou data z jednoho formuláře (v našem
případě údaje o jednom studentovi).
Formulář můžeme vyplňovat dvěma způsoby, jednak přímo v tabulce, druhak v části Formulář. Tabulka
vždy zobrazuje o jeden řádek více, než kolik je dat v systému, pro jejich lehčí přidávání. Na začátku
tedy máme k dispozici jeden řádek. Dvojklikem myši do kteréhokoli políčka se dostaneme do editačního
módu a můžeme začít vyplňovat data pro položku v daném sloupci. My začneme hned tím prvním,
políčkem Vysoká škola, do kterého vyplníme název školy, například Univerzita Karlova. Pomocí
klávesy TAB se dostaneme do dalšího políčka, Fakulta. Tím nám v datech vznikl nový záznam, přibyl
jeden prázdný řádek (pro přidání dalšího studenta) a my jsme stále v editačním módu. Můžeme tedy
rovnou zadat Matematicko-fyzikální fakulta. Hodnotu můžeme potvrdit klávesou ENTER, tím
se dostaneme zpět do prohlížecího módu. Po tabulce se můžeme pohybovat kurzorovými šipkami,
klávesou -> (šipka vpravo) tedy přejdeme do kolonky Obor. I když nejsme v editačním módu, můžeme
hned začít psát, první napsané písmenko (I) nás přepne do editace aktuálního políčka, kam doplníme
zbytek slova, tedy informatika. Tímto se při práci v tabulce kompletně obejdeme bez myši. Prvním
problematickým políčkem pravděpodobně bude pole Bakalářský, protože to je typu Ano/Ne a na jeho
editaci je v tabulce použito zaškrtávací políčko. V tomto případě se do editačního módu dostaneme
libovolným písmenkem a stav zaškrtávacího pole měníme pomocí klávesy MEZERA.
Poznámka
Pole zvýrazněná v tabulce červeným pozadím symbolizují nevalidní (špatně zadanou) hodnotu.
Těmto polím je nutné věnovat zvýšenou pozornost a opravit je. Špatně zadaná data totiž není
možné tisknout.
Druhým způsobem editace záznamů je vyplňování elektronického formuláře v části označené Formulář.
Nejprve je však nutné do tohoto formuláře vybrat nějaká data z výše popsané tabulky. To lze provést
jednoduše dvojkliknutím na číslo řádku (nejlevější sloupec tabulky). My tedy dvakrát klikneme na číslo
2 ve druhém řádku tabulky a tím se nám otevřou druhá (zatím prázdná) data pro editaci ve formuláři.
Ta můžeme vyplňovat úplně stejně, jako v tabulce. Mezi jednotlivými poli přeskakujeme pomocí kláves
ENTER nebo TAB. Kombinace kláves CTRL+ENTER načte do formuláře další data a zůstane v editaci
stejného políčka.
Poznámka
I v elektronickém formuláři je možné využít klávesy TAB pro přesun do následujícího pole stejných dat, kombinace SHIFT+TAB přesouvá na předcházející pole formuláře.
Těmito dvěma způsoby můžeme pořídit velice lehce data pro náš formulář. Po editaci (a i v průběhu
ní) je důležité pořízené údaje uložit do souboru. To lze provést kliknutím na ikonku Soubor → Uložit ,
popřípadě použitím klávesové zkratky CTRL+S.
Všechny prováděné změny je možné vrátit zpět pomocí klávesové zkratky CTRL+Z, naopak k obnovení naposledy vrácené změny slouží kombinace kláves CTRL+Y, popřípadě lze využít ikonek v menu
Úpravy.
Nyní, když už umíme vyplňovat data do formuláře, si pořídíme údaje o dalším (alespoň jednom) studentovi. Poté vytvořená data uložíme do datových úložišť pomocí tlačítka Uložit.
4.3. Náhled na tištěný formulář
Po vytvoření vzorových dat můžeme kliknutím na ikonu Náhled, které zobrazí dialog (4.2 – „Náhled
na vzorová data vyplněná v potvrzení o studiu“) s náhledem na aktuální data v elektronickém formuláři
vyplněná do papírového formuláře.
50
Vyplňovač formulářů
Obrázek 4.2. Náhled na vzorová data vyplněná v potvrzení o studiu
V tomto dialogu vidíte, jak budou vyplněná data vypadat na papíře. Odškrtnutím políčka Zobrazovat
pozadí stránek se schovají všechna pozadí a v náhledu zůstanou jenom data k vytištění. Pomocí tlačítek
Přiblížit a Oddálit, popřípadě pomocí skrolování kolečka myši při zmáčknuté klávese CTRL, lze měnit
přiblížení zobrazeného formuláře. Tlačítko Tisk otevře dialog pro nastavení tisku aktuálních dat, který
je blíže popsán dále v textu v kapitole 4.4 – „Tisk dat“. Šipkami Další záznam a
Předchozí záznam
můžeme přeskakovat mezi záznamy v tabulce.
Varování
Po skončení editování záznamů nezapomínejte prováděné změny ukládat do jejich datových
úložišť, jinak o ně přijdete! Nejjednodušším způsobem uložení formuláře je klávesová zkratka
CTRL+S.
4.4. Tisk dat
Záznamy uložené v datových úložištích a načtené do Vyplňovače formulářů je možné tisknout na papírový formulář (popřípadě do PDF nebo PostScript souborů), buďto rovnou s pozadím, nebo pouze
vyplněná (a dopočtená) data bez pozadí. K tisku se dá dostat dvěma způsoby, buďto přes náhled na
aktuální záznam z elektronického formuláře (4.3 – „Náhled na tištěný formulář“) nebo stisknutím ikonky
Tisk. První ze způsobů vybere k tisku právě zobrazený záznam, zatímco ten druhý tiskne všechny
celé vybrané řádky v tabulce aktuálního datového zdroje.
Poznámka
Celý záznam je možné vybrat stisknutím čísla záznamu (prví sloupeček v každém řádku tabulky). Další záznamy je možné k výběru přidávat stejným způsobem při současném držení kláve-
51
Vyplňovač formulářů
sy CTRL. Stisk čísla záznamu při současném držení klávesy SHIFT vybere celý rozsah řádků
mezi tou aktuální a naposledy aktivovanou.
Po vybrání záznamů k tisku je otevřen dialog pro nastavení tiskárny, 4.3 – „Nastavení tisku formulářů“.
Obrázek 4.3. Nastavení tisku formulářů
V levé části obrázku je zobrazen seznam stránek v aktuálním formuláři, který slouží pro výběr stránek
k tisku. Dále je na dialogu důležitý výběr Výstupního formátu. Nakonec je možné nastavit, zda tisknout
i pozadí stránek, nebo pouze hodnoty vyplněných (a dopočtených) polí. Volby Uložit všechny stránky do
stejného souboru a Otevřít cílovou složku mají smysl pouze při tisku do souboru (PDF nebo PostScript
formát). Přičemž první z nich má navíc smysl pouze pokud je v dokumentu více stránek a všechny mají
stejnou velikost, v tu chvíli je možné rozhodovat, jestli má být pro celý formulář vytvořen soubor jediný,
nebo zda má být každá stránka umístěna ve svém vlastním souboru.
My zvolíme tisk do PDF bez pozadí a necháme systém, aby nám po vytisknutí otevřel Průzkumníka ve
složce s vytvořenými soubory (nastavení viz 4.3 – „Nastavení tisku formulářů“). Po potvrzení dialogu
s nastavením tisku na nás vyskočí systémový dialog pro výběr vzoru pro jména souborů, do kterých
tisknout. Každý záznam se vždy tiskne do zvláštního souboru, v případě více rozměrů vybraných stránek
nebo nezaškrtnutí výběrového tlačítka Uložit všechny stránky do stejného souboru se pak ještě každá
stránka v rámci jednoho záznamu tiskne zvlášť. Proto v dialogu pro název souboru vybíráme pouze
vzor, ke kterému budou přidávána počítadla jako rozlišovací prvky pro záznamy a stránky. Přesnou
pojmenovávací konvenci naleznete dále v textu v oddílu 4.4.1 – „Pojmenování vytvořených souborů
při tisku“. Po výběru vzoru jména souboru, kde jsme vybrali potvrzeni.pdf začne tisk a po jeho
dokončení je otevřena složka s vytvořenými soubory, viz 4.4 – „Výpis vytištěných souborů“.
52
Vyplňovač formulářů
Obrázek 4.4. Výpis vytištěných souborů
Tisk do souborů ve formátu PostScript probíhá úplně stejně.
Při tisku na tiskárnu vyskočí standardní systémový dialog pro výběr tiskárny, na kterou se má tisknout.
Po jejím potvrzení se pro každý vybraný záznam vytisknou všechny stránky v pořadí definovaném ve
formuláři.
4.4.1. Pojmenování vytvořených souborů při tisku
Pojmenovávání výstupních souborů z tisku se řídí několika jednoduchými pravidly, my si je zde popíšeme a na konkrétním příkladě ukážeme názvy výstupních souborů. V každém z případů je nejprve
vybrán vzor pro jméno souboru (dokument.pdf), doplnění vzoru závisí na počtu záznamů k tisku a na
tom, zda se stránky jednoho záznamu tisknou zvlášť nebo do jednoho souboru.
• Jeden záznam
• Jedna stránka, popřípadě více stránek tištěných do stejného souboru — pouze název vzoru
(dokument.pdf).
• Více stránek každá tištěna zvlášť — název dokumentu následovaný číslem stránky
(dokument_1.pdf, dokument_2.pdf, ...).
• Více záznamů
• Jedna stránka, popřípadě více stránek tištěných do stejného souboru — název vzoru a číslo záznamu doplněné nulami zleva (dokument_01.pdf, dokument_02.pdf, ...).
• Více stránek každá tištěna zvlášť — název dokumentu následovaný číslem záznamu, nakonec číslo stránky (při dvou stránkách tedy dokument_01_1.pdf, dokument_01_2.pdf,
dokument_02_1.pdf, ...).
53
Kapitola 5. Integrace s PHP
Když je vytvořen aplikační vstup, je možné jej vyexportovat pro použití ve webovém prostředí. První
možností je vytvořit HTML stránku, na které bude stejný formulář, jaký byl navržen v designeru elektronického formuláře. Položky v tomto formuláři se chovají zcela identicky jako při vyplňování ve Vyplňovači
formulářů. Jediný drobný rozdíl je ten, že položky pro editování času a data jsou nahrazeny obyčejnými
textovými políčky. V HTML formuláři jsou dostupná tlačítka pro odeslání vyplněných dat a vymazání
celého formuláře.
Vygenerovaná HTML stránka bohužel není moc dobře použitelná, neboť se nedá integrovat do již hotové webové stránky. Je sice možné mírně ovlivnit vzhled pomocí externího CSS souboru, ale samotný
obsah změnit nelze. Proto je možné exportovat dokument pro použití se skriptovacím jazykem PHP. Výstupem tohoto exportu je soubor s příponou .php. Tento soubor obsahuje dvě funkce. Funkce generateScript, která vygeneruje Javascriptovou část webové stránky, takže je možné zavolat ji např. při
generovaní hlavičky dokumentu. Funkce generateForm pak vygeneruje celý obsah elementu <form>.
Je tedy možné vložit formulář na libovolné místo ve stránce. Pokud je při exportu vybráno některé z CSV
úložišť, je navíc vygenerovaná funkce saveForm, která dovede uložit vyplněný formulář do zadaného
CSV souboru. Platí zde drobné omezení — nastavené kódování úložiště je ignorováno a je použito to,
které je nastavené v interpretru jazyka PHP.
Jména položek, která jsou vrácena při odeslání nejsou z technických důvodů přesně ta, pod kterými
se položky vyskytují při návrhu formuláře. Tato jména jsou modifikována tak, že se před začátek vloží dvě podtržítka a každá tečka ve jméně je nahrazena rovněž dvěma podtržítky. Takže např položka
skupina1.polozka1 bude vrácena jako __skupina__polozka1. Z toho jména je snadné získat
zpátky originální jméno položky. Stačí odstranit první dvě podtržítka a všechna zbylá dvojitá opět nahradit tečkou.
Detailnější informace o tom, jak lze integrovat vygenerovaný PHP soubor do vlastních stránek, lze nalézt
ve složce PHP, kde je okomentovaný příklad použití.
54
Kapitola 6. Detektor oblastí a rotace
Detektor oblastí je zodpovědný za detekci oblastí v obrázku a jeho narovnání. Lze v něm pohodlně
obrázek nakalibrovat a zároveň umožňuje formulář načíst z už naskenovaného obrázku, případně si
naskenovat nový. V následujícím textu vám popíšeme typický způsob použití detektoru a zároveň si
ukážeme veškerou funkčnost.
6.1. Načtení obrázku
Obrázek pro analýzu obrazu můžeme získat dvěma způsoby — načíst již připravený obrázek nebo použít scanner nebo jiné ekvivalentní zařízení. V prvním případě stačí kliknout na ikonu Otevřít soubor
a poté zvolíme obrázek s naskenovaným formulářem. Ve druhém případě poklepáním na ikonku
Scanner otevřeme standardní systémový dialog pro výběr scanneru a dále v dodaném software k vašemu scanneru naskenujte obrázek.
6.2. Nastavení detekce hran
Pokud jste si již otevřeli nebo naskenovali nějaký obrázek, mělo by být dalším vaším krokem nastavení
detekce hran. K tomu slouží následující menu v pravém sloupečku.
Obrázek 6.1. Nastavení detekce hran
První nastavení intenzity odšumění by typicky mělo zůstat nezměněno. Pokud obrázek získáváte ze
scanneru bude šum minimální a výchozí nastavení naprosto dostačuje. Toto nastavení má smysl jen
pokud dostanete silně zašuměný obrázek získaný například z fotoaparátu se špatně nastaveným ISO.
Vzhledem k tomu, že získávat obrázek formuláře jinak než pomocí scanneru silně nedoporučujeme,
vystačíte pouze s druhým nastavením. Pomocí něj nastavujete práh citlivosti pro detekci hran. Zjednodušeně se dá říct, že čím víc vlevo bude nastavení, tím více hran bude zdetekováno a naopak. Znovu
by nemělo být třeba výchozí hodnotu měnit pro naprostou většinu formulářů. To, zda je nastavení potřeba, poznáte pomocí modrého obdélníku, se kterým lze pohybovat a měnit jeho velikost. Především pro
méně výkonné počítače může být pohyb příliš velkého obdélníku příliš náročný. Uvnitř tohoto obdélníku uvidíte zelené čáry, které zobrazují hrany rozpoznané naším algoritmem. Pro správně nastavenou
citlivost by výsledek měl vypadat následovně:
55
Detektor oblastí a rotace
Obrázek 6.2. Správně nastavený práh
Pokud je nastavený práh příliš nízký, získáte přibližně tento výsledek (čáry jsou detekovány i tam, kde
je nečekáte)
Obrázek 6.3. Příliš nízký práh
Nakonec je-li práh příliš vysoký jsou čáry přerušované nebo chybí úplně.
56
Detektor oblastí a rotace
Obrázek 6.4. Příliš vysoký práh
Jakmile máte optimálně nastavenou citlivost můžete pokračovat narovnáním obrázku.
Poznámka
Může se stát, že různé části formuláře potřebují různou citlivost. To se dá řešit pomocí dodatečné detekce, kdy detekci provádíte pouze po částech.
6.3. Narovnání obrázku
V tuto chvíli předpokládáme správně nastavenou citlivost detekce hran. Pokud jste tak neučinili, postupujte dle pokynů v předchozí kapitole. K narovnání obrázku formuláře slouží následující menu.
Obrázek 6.5. Menu pro rotaci
Tlačítky vlevo a vpravo otočíte obrázek o 90° vlevo resp. vpravo. Nejzajímavější ovšem je tlačítko Autodetekce, které vám narovná křivě naskenovaný obrázek.
6.4. Oříznutí obrázku
Tento nástroj vám umožní oříznout obrázek tak, aby obsahoval formulář bez okrajů. Spustíte jej kliknutím
na Vyříznout. Zobrazí se vám následující dialog
Obrázek 6.6. Okno pro potvrzení oříznutí
57
Detektor oblastí a rotace
a celý dialog se přepne do ořezávacího módu.
Obrázek 6.7. Ořezávací mód
Nyní vyberte oblast pro oříznutí a stiskněte Dokončit.
6.5. Kalibrace
Kalibrace se provádí naprosto stejně jako v editoru viz 3.4.3 – „Kalibrace pozadí stránky“. Před další
detekcí by měla být kalibrace co nejpřesnější.
6.6. Nastavení detekce obdélníků
Nastavení detekce obdélníků se provádí pomocí následujícího menu.
Obrázek 6.8. Menu pro nastavení detekce obdélníků
Minimální velikost značí minimální rozměr detekovaných oblastí v milimetrech. Pokud máte špatně provedenou kalibraci, bude toto nastavení nekorektní. Oblé rohy slouží k nastavení kulatých rohů u oblastí.
Obecně platí, že čím víc procent, tím kulatější. Kulatost se počítá vůči minimální velikosti oblasti.
58
Detektor oblastí a rotace
6.7. Tečkované čáry
Pokud chcete detekovat tečkované čáry, věnujte tomuto menu zvláštní pozornost. Můžete zde nastavit
maximální velikost teček a tím velmi ovlivnit kvalitu výsledku. Detektor je na správnost tohoto nastavení
poměrně citlivý. Detekovat tečkované čáry značí zda při detekci detekovat tečkované čárky.
Obrázek 6.9. Menu pro nastavení tečkovaných čar
6.8. Další nastavení
Další nastavení jsou následující.
Obrázek 6.10. Menu pro další nastavení
Odstranit staré zdetekované oblasti značí, zda při detekci budou nejprve odstraněny dříve vydetekované
oblasti (pokud se provádí detekce ve vybrané oblasti, budou oblasti smazané pouze v této vybrané
oblasti). Provádět analýzu jen ve vybrané oblasti zahájí při zaškrtnutí detekci v rámci oblasti.
6.9. Detekce a ukončení
Pro detekci a ukončení použijte tato tlačítka
Obrázek 6.11. Menu pro detekci a ukončení
Tlačítko Analyzovat spustí analýzu nad obrázkem. Jejím výsledkem jsou detekované oblasti. Pokud jste
s výsledkem spokojeni můžete detekci zakončit tlačítkem Ukončit. V opačném případě můžete změnit
některá nastavení a zkusit detekci znovu. Pokud si detekci rozmyslíte úplně stiskněte Zrušit.
6.10. Ostatní
Pokud chcete zrušit veškeré detekce a transformace stiskněte tlačítko reset. Pro nastavení chování
pravítka použijte tlačítko Nastavení pravítka. Otevře se vám následující dialog
59
Detektor oblastí a rotace
Obrázek 6.12. Dialog pro nastavení pravítka
kde můžete nastavit veškeré chování pravítka.
60
Kapitola 7. Závěr
Na závěr bychom vám chtěli popřát příjemnou práci s našimi programy, aby vám pomohly při vaší práci
a usnadnily vám vytváření a vytváření formulářů. Zároveň doufáme, že vám tento manuál přiblížil naše
aplikace tak, abyste s nimi mohli běžně pracovat.
Další informace o projektu Form Tools můžete nalézt na adrese http://formtools.jezci.net/. Pokud byste měli jakýkoli dotaz, problém či připomínku, neváhejte nás kontaktovat na adrese
[email protected].
61

Podobné dokumenty

Číslo 4/2015 ke stažení ve formátu PDF

Číslo 4/2015 ke stažení ve formátu PDF Vždy, když některý z 2,5 tisíce běžců proběhl cílovou rovinku, tak hlásili jeho jméno a zemi, ze které je – celkem byli ze 111 států. A když jsem dobíhal já, hlásili, že dobíhá první nevidomý běžec...

Více

Studijní text - Personalizace výuky prostřednictvím e

Studijní text - Personalizace výuky prostřednictvím e Pro předmět Internet a sítě 1. semestru oboru Automatické řízení a inženýrská informatika ste obdrželi studijní balík obsahující:

Více

Příloha č 4 - Náležitosti PD - Státní fond dopravní infrastruktury

Příloha č 4 - Náležitosti PD - Státní fond dopravní infrastruktury veřejně přístupných komunikací a ploch souvisejících se staveništěm osobami s omezenou schopností pohybu a orientace, Z hlediska bezbariérové užívání stavby je nutné popsat, jakým způsobem bude sta...

Více

Otevřít náhled PDF

Otevřít náhled PDF u Znojma jsme se rozhodli uspořádat další konferenci. Pokračujeme tak v pravidelném půlročním setkávání manažerů a Centrály Partners,“ vysvětluje Vlaďka Cisarzová z Centrály, která má celou akci na...

Více

opel astra

opel astra Vnější zrcátka .............................. 33 Vnitřní zrcátka .............................. 35 Okna ............................................ 35 Střecha ........................................

Více

Stručný průvodce pro práci s programem ClaroRead

Stručný průvodce pro práci s programem ClaroRead dočasně upravovat velikost, barvu a typ písma, rozestupy mezi znaky, řádky i odstavci a měnit barvu pozadí celého dokumentu. V průběhu psaní navrhuje vhodná slova a k dispozici je výkonná oprava pr...

Více

SIMULÁCIA PAĽBY PROTILIETADLOVEJ RAKETOVEJ JEDNOTKY

SIMULÁCIA PAĽBY PROTILIETADLOVEJ RAKETOVEJ JEDNOTKY Obrázok 7: Blok Stateflow na realizáciu prepínania režimov NRL Popisovaný blok priebežne vyhodnocuje presnosť natočenia anténneho postu NRL. Zároveň tvaruje vyhľadávaciu charakteristiku podľa toho,...

Více

Uživatelský manuá k programu FormOffice

Uživatelský manuá k programu FormOffice Postup přidávání jednotlivých položek je jednoduchý: 1. v rozbalovacím menu "Přidat políčko" vyberete požadovanou položku z tabulky 2. tlačítkem přidáte položku na formulář buď do hlavičky, nebo na...

Více