Přejít na obsah
Skip to main content

Opakovatelnost repetition

Vlastnost zapíná či vypíná opakovatelnost segmentu ve struktuře dokumentu a nastavuje další související vlastnosti. Opakovatelnost je klíčová pro strukturu databázových tabulek dokumentu.

[type:...;][area-label-by:...;][filter:...;][index-column:...;][init-count:...;][init-value:...;][irremovable:...;][gappy:...;][max-count:...;][min-count:...;][questionary-by:...;][questionary-off:...;][table-face:...;][table-face-caption:...;][visible]

Tato vlastnost nastavuje shopnost opakovatelnosti segmentu v rámci dokumentu a upravuje některé rysy touto opakovatelností spojené. Vlastnost se skládá z dílčích pod-vlastností oddělených středníkem, kde dílčí nastavení type určuje vlastní opakovatelnost a další upravují potřebné chování či jiné rysy spojené s opakováním segmentů:

  • type - (none|user|depend) určuje zda segment je či není v rámci rodičovské větve opakovatelní. Výchozí none indikuje běžný segment bez opakování; Zbylé volby naopak zavádějí pro segment opakovatelnost;

  • area-label-by - nastavování názvu (typu) oblasti dle obsahu prvku oblasti

  • filter - možnost skrýt filtrovací podmínkou některé instance opakování

  • index-column - obsah indexového (prvního) sloupce v tabulkové oblasti

  • init-count - výchozí počet opakování v novém dokumentu (formuláři)

  • init-value - výchozí hodnota prvku opakování (při více vých. opakováních)

  • irremovable - možnost zákazu odstranění již uloženého opakování ve formuláři

  • gappy - ošetření děr v číselné řadě primárního klíče (true / false)

  • max-count - omezení maximálního možného počtu opakování segmentu

  • min-count - omezení minimálního možného počtu opakování segmentu

  • noneinsertable - možnost zákazu přidání již opakování ve formuláři

  • preserve-empty - ochrana nepoužitých opakování v nových dokumentech

  • table-face - nastavení zobrazení opakovatelné oblasti jako tabulkového řádku

  • table-face-caption - nahrazení generovaného nadpisu v hlavičce tabulkové oblasti

init-count - výchozí počet opakování

Vlastnost formou celého kladného či nulového čísla nastavuje výchozí počet opakování při zadání formuláře nového dokumentu. Výchozí hodnotou této vlastnosti je jednička. Nulou docílíme nenabízení žádného opakování ve formuláři nového dokumentu a při zadání více než jednoho opakování lze s výhodou použít vlastnost init-value pro přednastavení různých hodnot v opakováních.

irremovable - možnost zákazu odstranění opakování

Opakování, která již byla uložena v databázové evidenci je možné ochránit proti odstranění nastavením vlastnosti irremovable na hodnotu true. Standardní hodnotou této vlastnosti je false. U nově přidaných opakování nebo u všech opakování v nově zadávaném dokumentu jsou tato vlastnost a její nastavení ignorována.

gappy - ošetření mezer v číslech prim. klíčů

Hodnota gappy je logická - může být tedy nastavena na true či false (resp. na yes či no). Jde o možnost vzniku tzv. děr v číselných řadách primárního klíče opakování. Parametr tyto díry povoluje - výchozí je false, tedy zákaz děr v číselné řadě. Více o těchto mezerách viz. dokumentový parametr gappy.

max-count - maximální možný počet opakování

Je-li zapotřebí omezit maximální možný počet opakování určitého opakovatlného segmentu, je nutné nastavit vlastnost max-count na hodnotu celého kladného a nenulového čísla. Plnění hodnoty nastavení je ve formuláři kontrolováno průběžně při celé editaci dokumentu. Odstraněná opakování, jež jsou ve skutečnosti jen skrytá, nejsou započítávána do kontrolovaného počtu.

POZNÁMKA: Ve formuláři se kontrola počtu opakování provádí v okamžiku přidávání či odebírání opakování. Pokud je třeba kontrolu provádět i v okamžiku ukládání dokumentu, musí být použita i kontrolní pravidla. U nových dokumentů je rovněž možné s výhodou použít vlastnost init-count.

min-count - minimální možný počet opakování

Je-li zapotřebí omezit minimální možný počet opakování určitého opakovatlného segmentu, je nutné nastavit vlastnost min-count na hodnotu celého kladného a nenulového čísla. Na rozdíl od nastavení max-count je min-count kontrolováno až při ukládání formuláře dokumentu a při zjištění překročení hranice je ukládání zastaveno. Odstraněná opakování, jež jsou ve skutečnosti jen skrytá, nejsou započítávána do kontrolovaného počtu.

POZNÁMKA: Ve formuláři se kontrola počtu opakování provádí v okamžiku přidávání či odebírání opakování. Pokud je třeba kontrolu provádět i v okamžiku ukládání dokumentu, musí být použita i kontrolní pravidla. U nových dokumentů je rovněž možné s výhodou použít vlastnost init-count.

noneinsertable - možnost zákazu přidání opakování

Skrytí tlačítka pro přidání opakování a také eliminaci všech dalších možností formuláře pro přidání instance daného opakování docílíte nastavením vlastnosti noneinsertable na hodnotu true. Opakování tak můžete svěřit např. transformační akci, která zajistí speciální okolnosti či okamžik vložení.

preserve-empty - ochrana nepoužitých opakování

Při zavádění nových dokumentů prostřednictvím webových formulářů se ověřuje, zda ve výchozím opakování (tedy ne v tom, které přidá uživatel) byla provedena najaká úprava a pokud ne, je toto opakování, ještě před odesláním na server k uložení, odstraněno. Důvodem je zbytečnost takových záznamů v drtivé většině případů. Někdy ovšem toto chování může být shledáno jako nevyhovující, a proto je k dispozici nastavení preserve-empty, které jej vypíná při zápisu:

preserve-empty: true

Výchozí hodnotou při neuvedení je samozřejmě false a je možné i zde uvádět ekvivalentní hodnoty yes/no.

table-face - nastavení tabulky ve formuláři

Oblasti, které jsou opakovatelné a obsahují pouze prvky (nikoli vnořené podoblasti), mohou ve formuláři tvořit řádek tabulky s tím, že hlavička se automaticky sestaví z názvů prvků. Tohoto efektu je možné docílit nastavením vlastnosti table-face na true. Stejného efektu je docíleno, pokud výchozí koncept (vlastnost concept segmentu) u opakovatelné oblasti je nastaven na inline.

table-face-caption - nahrazení generovaného nadpisu v hlavičce tabulky

Při zadání hodnoty tato nahrazuje automaticky generovaný nadpis v hlavičce tabulkové oblasti ve formuláři dokumentu. Apostrofy nejsou nutné.

Potenciální vlastnické uzly

Vlastnost repetition je možné uvést u následujících uzlů:

  • element - prvek (segment uvnitř definice);

  • area - oblast (segment uvnitř definice);

Podřízené stránky

area-label-by - nastavování názvu oblasti dle potomka

V některých aplikačních případech je zapotřebí, aby bylo pod sebe možné přidávat opakování různých druhů. Například v určitém dokumentu můžeme chtít, aby uživatel měl možnost pod sebe přidávat odstavce, obrázky a další běžné druhy. Protože celý princip XDS je koncipován tak, že je pevně dán druh opakování, je zde nabízena možnost tento pevný rámec poněkud obejít tím, že do jedné oblasti soustředíme prvky různého druhu a pak přidáme jeden prvek výběrový a do jeho seznamu uvedeme jednotlivé druhy, které může oblast reprezentovat. Na hodnotě výběru je pak možné nastavit zobrazování prvků potřebných pro určitý druh pomocí appear-if těchto prvků a ve vlastnosti area-label-by pak nastavit odkaz na tento výběrový prvek. Výběrovým prvkem je pak míněn buď prvek s roletkou select » option nebo prvek s definovaným výběrovým uzlem. Prvek bude automaticky skryt a jeho obsah bude určován při přidávání nové oblasti, kdy bude uživatel dotazován na druh, který chce přidat. Tento druh je pak v další editaci neměnný (pokud samozřejmě uživatel neprovede kroky zpět). Tímto způsobem je simulováno přidávání různých druhů opakován v rámci jednoho seznamu. Například můžeme mít oblast s názvem obsahdokumentu a v ní různé prvky. Dále v této oblasti bude existovat prvek druhobsahu, který bude výběrový. Pak zápis vlastnosti bude vypadat takto:

filter - filtrování instancí opakování

Zatímco vlastnost appear-if segmentu umožňuje skrýt celý segment (v případě opakovatelného segmentu jej skrývá i s ovládacími prvky a příp. hlavičkou tabulky), můžete v části filter vlastnosti repeat-behaviour definovat podmínku zobrazení pouze instancí opakování daného segmentu. Pokud tedy budeme mít položky, které nechceme z databáze úplně smazat, ale chceme jen, aby se již nezobrazovaly, můžeme na těchto položkách (v opakovatelné oblasti) definovat zaškrtávátko "Zrušeno". Pak by mohlo být využití filtru následující:

index-column - obsah indexového sloupce

Tato vlastnost nabízí čtyři možnosti formou následujících klíčových slov: position (výchozí), label, combine nebo none. Účelem vlastnoti je v tabulkové oblasti určit, zda se v prvním sloupci má zobrazit pořadové číslo opakování (nast. position), obecný obsah vlastnosti label (nast. label), kombinace obojího (nast. combine) nebo zda se nemá první sloupec zobrazovat vůbec (nast. none). Nejčastější a také nejpraktičtější variantou je výchozí hodnota position, která zajišťuje zobrazení zvýrazněného pořadového čísla řádku (oblasti) ve formuláři dokumentu a tiskovém náhledu.

init-value - výchozí hodnota prvku/ů opakování

Při zadání více než jednoho výchozího opakování často bývá užitečné nastavit také různé (!) initial hodnoty prvků obsažených v opakování. Můžete tak například ve formuláři vytvořit tabulku ročního výkazu, kde jedním opakováním bude oblast míněná jako kalendářní měsíc. V takovém případě bude do výchozího počtu opakování init-count nastaven počet 12. Uvažujme dále, že v každém takovém opakování je prvek pro zadání čísla měsíce (hodnoty 1 až 12). Hodnoty měsíců pak pomocí init-value zadáme takto: