1. Základní informace
1.1. Popis ovládacího prvku
ForeignKey je jednořádkový rozbalovací seznam libovolné šířky s možností výběru právě jedné hodnoty ze seznamu dostupných hodnot, případně textové pole zobrazující právě jednu hodnotu ze seznamu dostupných hodnot. ForeignKey používá databázový typ „int“, a do databáze ukládá primární klíč (ID) vybraného databázového záznamu.
ForeignKey je ovládací prvek, podle kterého se v aplikacích obvykle joinuje, resp. je používán v podmínkách joinů uvnitř definice databázových dotazů. ForeignKey není vhodné používat v následujících případech:
- Pokud propojuje rodičovský záznam se záznamy vnořenými – v takovém případě se doporučuje použít cizí klíč „pid“, který je součástí každého editačního formuláře. Následující příklady demonstrují typické entity, u kterých je vhodné použít cizí klíč „pid“ u vnořeného záznamu:
- Zakázka / položka zakázky
- Objednávka / položka objednávky
- Faktura / položka faktury
- Pokud supluje význam databázových sloupců, které v sobě již nesou unikátní hodnoty:
- Přihlašovací jména uživatelů, např. „NovákP“ apod.
- Zkratky jazyků, např. „cs“, „de“ apod.
1.2. Vytvoření nového ovládacího prvku
- Detailní popis vytváření nových ovládacích prvků v editačním formuláři je uveden v samostatné příručce Vytváření ovládacích prvků editačního formuláře.
1.3. Editace nebo smazání ovládacího prvku
- U každého existujícího ovládacího prvku se po jeho levé straně v editačním formuláři zobrazuje ikona tužky, která slouží pro změnu nastavení ovládacího prvku nebo jeho smazání.
- Jednotlivé ovládací prvky mohou být v editačním formuláři vertikálně přesouvány metodou Drag&Drop. Přesunutí spočívá v chycení ovládacího prvku nejlépe za jeho název umístěný v levém sloupci editačního formuláře, a následném tažení až na požadované místo v editačním formuláři.
- Ovládací prvky je možné přesouvat jen se zaškrtnutým polem „Drag&Drop“ umístěným nad toolbarem s ovládacími prvky. Z bezpečnostních důvodů je toto pole po každém přihlášení do aplikace nezaškrtnuté, aby nedošlo k nechtěnému přesunutí ovládacího prvku.
- Smazání foreignkey má za následek nevratné smazání databázového sloupce spojeného s tímto foreignkey v databázi, a tudíž i ke smazání jeho hodnot ve všech záznamech databázové tabulky. Některé foreignkey v systémových editačních formulářích není možné smazat, protože jsou nutné k základní funkčnosti celé aplikace.
2. Seznam záložek v dialogu nastavení ovládacího prvku
- Obecné – Nastavení obecných vlastností
- Hodnoty – Nastavení databázového dotazu se seznamem hodnot, sloupců zobrazovaných v detailu a výchozí hodnoty
- Události – Nastavení javascriptových událostí
- Tlačítko – Nastavení tlačítka, které může být zobrazováno napravo vedle ovládacího prvku
- Nápověda – Nastavení textu nápovědy, který může být zobrazován v pravé části editačního formuláře
- Filtr – Nastavení filtru, který může být zobrazován v nahlížecí tabulce v záhlaví sloupce
- Práva – Nastavení práv
- Administrace – Nastavení ostatních vlastností
2.1. Záložka „Obecné“
2.1.1. Název
- Název ovládacího prvku zobrazovaný v editačním formuláři v samostatném sloupci s barevným pozadím nalevo vedle samotného rozbalovacího seznamu.
2.1.2. Zkrácený název
- Volitelný název ovládacího prvku zobrazovaný v záhlaví nahlížecí tabulky, pokud je ovládací prvek zvolen jako jeden ze sloupců nahlížecí tabulky.
- Je-li zkrácený název uveden, zobrazuje se celý název ovládacího prvku v tooltipu nad zkráceným názvem.
- Není-li zkrácený název uveden, zobrazuje se v záhlaví nahlížecí tabulky celý název ovládacího prvku.
- Pomocí zkráceného názvu „ “ (pevná mezera) lze úplně skrýt název ovládacího prvku zobrazovaný v nahlížecí tabulce.
2.1.3. Slovník...
- Slovník zobrazuje seznam názvů ostatních ovládacích prvků, formulářů, nahlížecích stránek, kategorií, aplikací a aplikačních skupin, použitých napříč celou aplikací.
- Vyhledávání ve slovníku slouží k navržení správného názvu ovládacího prvku a k udržení konzistence názvosloví v celé aplikaci tak, aby se ovládací prvky se stejným významem umístěné na různých místech v aplikaci nazývaly stejným způsobem.
2.1.4. Šířka
- Šířka ovládacího prvku v editačním formuláři uvedená v pixelech.
- Šířka se skládá ze tří částí: z odsazení od předchozího ovládacího prvku, které se zobrazuje jen se zaškrtnutou možností „Přichytit k předchozímu ovládacímu prvku“, z šířky samotného ovládacího prvku v editačním formuláři, a volitelně z šířky sloupce v nahlížecí tabulce, pokud je ovládací prvek zvolen jako jeden ze sloupců nahlížecí tabulky.
- Při nastavení šířky na 0 pixelů se nezobrazuje typické orámování ovládacího prvku, a vybraná hodnota se zobrazuje jako běžný odstavec s prostým textem/odkazem. Text může být zobrazen jako odkaz na vybraný záznam, který uživatele přesměruje přímo do editačního formuláře konkrétního vybraného záznamu. Odkaz se zobrazuje v případě, že je v nastavení pickeru zaškrtnuto „Povolit otevírání záznamů“.
- Zadáním šířky 0 se zároveň zaškrtne možnost „Zobrazit jako text/odkaz v editačním formuláři“.
2.1.5. Možnosti
- Vyžadované pole
- Zaškrtnutí vyžadovaného pole určuje, zda má být v editačním formuláři vyžadováno vyplnění platné hodnoty před jejím uložením do databáze.
- Při zobrazení jako rozbalovací seznam se u vyžadovaného pole nenabízí prázdná položka. Je-li hodnota prázdná, předvybere se první položka seznamu, a to i u již existujícího záznamu; tato hodnota se uloží při nejbližším uložení záznamu. Prázdná položka se zobrazí jen tehdy, je-li seznam hodnot prázdný.
- Nastavení vyžadovaného pole nemá vliv na databázový typ sloupce, který je přidružen k aktuálnímu ovládacímu prvku v databázi. Všechny databázové sloupce jsou nastaveny tak, že akceptují i databázovou hodnotu „null“.
- Hodnota může být v databázi uložena jako celé číslo nebo jako databázová hodnota „null“. Při sestavování podmínek databázového dotazu je tedy důležité počítat i s alternativou, že je ve sloupci v databázové tabulce uložena kromě nuly – celého čísla – také databázová hodnota „null“. Taková podmínka může vypadat v řeči NG následovně: fk rovná se „0“ nebo fk není definováno. A nyní v jazyce SQL: ng_idfk = 0 OR ng_idfk IS NULL.
- Jen ke čtení
- Nastavení ovládacího prvku jen ke čtení určuje, zda má být v editačním formuláři rozbalovací seznam disablovaný.
- V disablovaném seznamu není možné ručně vybírat hodnoty, samotný seznam má zašedlé pozadí, a text vybrané hodnoty se zobrazuje odlišným fontem než u zbytku ovládacích prvků.
- V disablovaném seznamu je možné vybírat hodnoty pomocí javascriptu:
- control_SetValue(#ng_#, 123);
- control_SetValue(#ng_#, 0);
- Ovládací prvky obecně je možné disablovat pomocí javascriptu:
- control_Disable(#ng_#); // Obecná javascriptová funkce pro všechny databázové ovládací prvky
- fk_Disable(#ng_#);
- Stejně tak je možné ovládací prvky pomocí javascriptu enablovat:
- control_Enable(#ng_#); // Obecná javascriptová funkce pro všechny databázové ovládací prvky
- fk_Enable(#ng_#);
- Ve výchozím nastavení není možné enablovat ovládací prvek, který je nastaven pouze ke čtení, javascriptové funkci control_Enable musí být předán druhý volitelný parametr „ignorereadonly“: control_Enable(#ng_#, true);
- Zakázat změnu hodnoty pomocí JavaScriptu
- Jen ve spojení s možností „Jen ke čtení“
- Zaškrtnutí zákazu změny hodnoty pomocí javascriptu zajistí, aby u ovládacích prvků nastavených jen ke čtení nedošlo k podvržení hodnoty v internetovém prohlížeči ze strany potencionálních útočníků na editační formulář.
- Před uložením záznamu do databáze je vždy zkontrolováno, zda byla hodnota změněna pouze na straně serveru, a případně nastaví hodnotu na původní platnou.
- Skryté pole
- Nastavení skrytého pole určuje, zda má být ovládací prvek součástí editačního formuláře, avšak v uživatelském režimu nemá být viditelný.
- Skrytý ovládací prvek včetně vybrané hodnoty je možné dohledat ve zdrojovém kódu webové stránky. Nelze ho tedy používat jako součást bezpečnostních opatření, k tomu se používají práva na ovládací prvek.
- Zobrazit jako text/odkaz v editačním formuláři
- Zaškrtnutí tohoto pole určuje, zda se má vybraná hodnota zobrazovat jako běžný odstavec s prostým textem/odkazem. Text může být zobrazen jako odkaz na vybraný záznam, který uživatele přesměruje přímo do editačního formuláře konkrétního vybraného záznamu. Odkaz se zobrazuje v případě, že je v nastavení pickeru zaškrtnuto „Povolit otevírání záznamů“.
- Zobrazení textu/odkazu se doporučuje v situacích, kdy se vybírá jeden konkrétní záznam ze seznamu velkého množství záznamů.
- V takovém případě je použití rozbalovacího seznamu nevhodné a dokonce může zablokovat načtení samotného editačního formuláře, protože jeho HTML kód může díky všem uvedeným hodnotám rozbalovacího seznamu (<option value=“1“>ABC</option>) narůst do velikosti desítek či stovek megabajtů.
- Pokud tato situace nastane, je možné ovládací prvek opravit ze seznamu všech ovládacích prvků NET Genia přímo v reportech:
- zobrazit obsah databázové tabulky „scolumns“,
- vyhledat příslušný ovládací prvek podle jeho ID nebo podle databázového názvu (identifikátoru),
- otevřít vlastnosti ovládacího prvku pomocí ikony tužky,
- zaškrtnout pole „Zobrazit jako text/odkaz v editačním formuláři“.
- Při uložení záznamu zkopírovat hodnotu do PID
- Zaškrtnutí tohoto pole určuje, zda má být před uložením záznamu do databáze zkopírována hodnota ovládacího prvku do sloupce „pid“.
- Spolu se sloupcem „pid“ se nastaví i sloupec „pform“ na editační formulář, ze kterého pochází seznam hodnot.
- Při uložení v editačním formuláři zůstane sloupec „pid“ beze změny, je-li hodnota ovládacího prvku prázdná (0). Při změně hodnoty přímo v nahlížecí tabulce se naopak prázdnou hodnotou nastaví sloupce „pid“ i „pform“ na 0.
- Přiřazení hodnoty všem vyfiltrovaným záznamům pomocí položky filtru „Přiřadit hodnotu...“ sloupec „pid“ nemění.
- Zobrazovat hodnotu v nahlížecí tabulce bez nutnosti joinování
- Zaškrtnutí tohoto pole určuje, zda má být v nahlížecí tabulce hodnota uložená v databázi – ID vybraného záznamu – automaticky převedena na textový údaj stejně jako v editačním formuláři.
- Povolit hromadné změny
- Povolení hromadných změn určuje, zda má být v nahlížecí tabulce namísto samotné hodnoty ovládacího prvku zobrazen rozbalovací seznam s vybranou hodnotou, s možností změny hodnoty bez nutnosti otevření a editace záznamu v editačním formuláři. Tento rozbalovací seznam se zobrazuje pouze v nahlížecích tabulkách, které mají povolené hromadné změny dat.
- Anonymní uživatel může hodnotu v nahlížecí tabulce měnit za stejných podmínek jako přihlášený uživatel, tedy podle práv na editaci záznamu. Všichni anonymní návštěvníci ale vystupují pod jedním uživatelským účtem, a jsou proto vlastníky všech záznamů, které některý z nich založil. Smí-li záznam měnit jeho vlastník, může tak každý anonymní návštěvník měnit i záznamy založené jiným návštěvníkem.
- Hromadné změny jsou povolené pouze v případě, že není zaškrtnuto „Zobrazit jako text/odkaz v editačním formuláři“.
- Rozbalovací seznam se v nahlížecí tabulce zobrazí jen tehdy, je-li šířka ovládacího prvku v editačním formuláři větší než 0, a jen uživateli, který smí záznam upravit. U ovládacího prvku nastaveného „Jen ke čtení“ se rozbalovací seznam nezobrazí. Ve všech ostatních případech se zobrazí hodnota jako text.
- Spustit OnBeforeSave/OnAfterSave před uložením záznamu do databáze
- Jen ve spojení s možností „Povolit hromadné změny“
- Zaškrtnutí tohoto pole určuje, zda se při uložení hodnoty ovládacího prvku do databáze přímo z nahlížecí tabulky má spustit skript „OnBeforeSave“ a následně „OnAfterSave“, který
- může zamezit uložení hodnoty pomocí vyvolání přerušení,
- nebo může spustit dodatečné databázové operace, odeslání emailů apod.
- Dojde-li ve skriptu „OnBeforeSave“ k přerušení, zobrazí se uživateli text chybového hlášení, vybraná hodnota rozbalovacího seznamu v nahlížecí tabulce se vrátí do původního stavu, a k uložení hodnoty do databáze nedojde.
- Dojde-li ve skriptu „OnAfterSave“ k přerušení, zobrazí se sice uživateli příslušné chybové hlášení, na úspěšné uložení hodnoty do databáze to však již nemá vliv.
- Zaškrtnutí tohoto pole určuje, zda se při uložení hodnoty ovládacího prvku do databáze přímo z nahlížecí tabulky má spustit skript „OnBeforeSave“ a následně „OnAfterSave“, který
- Přichytit k předchozímu ovládacímu prvku
- Zaškrtnutí tohoto pole určuje, zda má být samotný ovládací prvek v editačním formuláři zobrazen napravo vedle předchozího, nebo bude zobrazen běžným způsobem pod předchozím ovládacím prvkem.
- Je-li ovládací prvek přichytáván k předchozímu, lze definovat šířku odsazení od předchozího ovládacího prvku
- Odsazení se definuje v pixelech v samostatném textovém poli, které je umístěno nalevo vedle textového pole „Šířka“.
- Detailní popis přichytávání k ovládacím prvkům je uveden v samostatné příručce Nastavení vzhledu.
2.2. Záložka „Hodnoty“
2.2.1. Hodnoty
- Seznam hodnot ovládacího prvku definuje databázový dotaz, který je vyhodnocen při otevření nebo aktualizaci editačního formuláře.
- Podmínky databázového dotazu omezují nabídku hodnot v editačním formuláři. Při uložení záznamu se nekontroluje, zda uložené ID podmínkám dotazu odpovídá.
- V nastavení databázového dotazu lze zvolit „Hodnota uložená v databázi“ – sloupec, jehož hodnota se ukládá do cizího klíče místo ID vybraného záznamu. Detailní popis je uveden v samostatné příručce Návrhář databázových dotazů.
- Jsou-li záznamy tabulky, ze které seznam hodnot pochází, vnořené do záznamů téže tabulky, zobrazí se seznam jako strom a každá hodnota obsahuje celou cestu ve tvaru „Rodič / Dítě“. Stromové zobrazení se nepoužije, je-li v dotazu zvolena „Hodnota uložená v databázi“.
- Mimo stromové zobrazení se ze seznamu vynechávají nově založené záznamy, které ještě nebyly odeslány synchronizací a čekají v její frontě.
- Ve spojení se zaškrtávacím polem „Zobrazit jako text/odkaz v editačním formuláři“ je možné v poli „Detaily“ zvolit i další sloupce, které se budou zobrazovat v editačním formuláři spolu s vybranou hodnotou.
2.2.2. Výchozí hodnota
- Výchozí hodnota se používá u nově vytvářených záznamů v editačním formuláři. Jde o hodnotu, která se automaticky předvyplní do ovládacího prvku v situaci, kdy je otevřen editační formulář za účelem vytvoření nového záznamu, který dosud v databázi neexistuje.
- Výchozí hodnotu lze naplánovat pomocí skriptové funkce „SCHEDULEDEFAULTVALUE(ng_, 123)“ ze skriptu, který je součástí tlačítka pro otevření nového editačního formuláře.
- Rozbalovací seznam obsahuje následující typy výchozích hodnot:
- Vlastní – výchozí hodnotu definuje textová konstanta, proměnná, nebo kombinace obojího, zapsaná v textovém poli pod rozbalovacím seznamem. Mezi obvyklé proměnné patří „#lastvalue#“, „#lastvalue2#“ apod.
- Aktuální hodnota v databázi – aktuální hodnota v databázi má význam pouze ve spojení se zaškrtávacím polem „Vyplnit výchozí hodnotu před každým uložením záznamu do databáze“
- Sloupce některých databázových záznamů jsou měněny i na pozadí operačního systému například externími aplikacemi. Typicky jde o statusy, datumy zpracování databázového záznamu apod. Během doby, kdy má databázový záznam otevřený některý uživatel v editačním formuláři, může být hodnota takového sloupce změněna na pozadí externí aplikací. V takovém případě nesmí být pro uložení záznamu použita hodnota aktuálně přítomná v editačním formuláři (tato hodnota byla platná v době otevření záznamu), ale musí být použita hodnota aktuálně zapsaná v databázi.
- Z dotazu – výchozí hodnotu definuje výsledek databázového dotazu, který je vyhodnocen při otevření editačního formuláře
2.2.3. Možnosti
- Vyplnit výchozí hodnotu při každém otevření editačního formuláře
- Zaškrtnutí tohoto pole určuje, zda dojde po otevření již existujícího záznamu k přepsání aktuální hodnoty v editačním formuláři na výchozí hodnotu.
- Ovládací prvky, které mají jako výchozí hodnotu nastavené volání externí funkce, například „ngef2(test)“, a zároveň mají zaškrtnuté vyplnění výchozí hodnoty při každém otevření editačního formuláře, mohou mít v databázi prázdnou nebo nevyplněnou hodnotu, a přesto se při pokusu o zobrazení této hodnoty všude v aplikaci kromě editačního formuláře vyhodnotí externí funkce nastavená jako výchozí hodnota.
- Vyplnit výchozí hodnotu před každým uložením záznamu do databáze
- Zaškrtnutí tohoto pole určuje, zda dojde před každým uložením záznamu k přepsání aktuální hodnoty v editačním formuláři na výchozí hodnotu.
- Ovládací prvky, které mají jako výchozí hodnotu nastavené volání externí funkce, například „ngef2(test)“, a zároveň mají zaškrtnuté vyplnění výchozí hodnoty před každým uložením záznamu do databáze, mohou mít v databázi prázdnou nebo nevyplněnou hodnotu, a přesto se při pokusu o zobrazení této hodnoty všude v aplikaci kromě editačního formuláře vyhodnotí externí funkce nastavená jako výchozí hodnota.
- Pouze při ruční změně hodnoty v jiném ovládacím prvku
- Ve spojení s možností „Vyplnit výchozí hodnotu před každým uložením záznamu do databáze“
- Zaškrtnutí tohoto pole určuje, zda dojde před každým uložením záznamu k vyhodnocení změny hodnoty v jednom z ostatních ovládacích prvků editačního formuláře. Pouze v takovém případě pak dojde k přepsání aktuální hodnoty v editačním formuláři na výchozí hodnotu.
2.3. Záložka „Události“
2.3.1. OnChange
- Událost „onchange“ určuje seznam javascriptových příkazů oddělených středníkem, které se vykonají po změně hodnoty a následném opuštění ovládacího prvku.
- Rozbalovací seznam nabízí následující často používané javascriptové funkce:
- „form_Update();“ – aktualizuje editační formulář, například kvůli obnově dat v nahlížecích tabulkách nebo ve zdrojích dat ostatních ovládacích prvků
- „bt_Click(BT);“ – vyvolá kliknutí na tlačítko; „BT“ je zástupný identifikátor, který se nahradí identifikátorem tlačítka ze záložky „Administrace“ ovládacího prvku Button
- Detailní popis javascriptových funkcí je uveden v samostatné příručce JavaScriptové funkce.
2.4. Záložka „Tlačítko“
2.4.1. Nadpis
- Nadpis určuje název tlačítka, které se volitelně zobrazuje napravo vedle samotného ovládacího prvku v editačním formuláři.
- Nevyplněný název značí, že tlačítko nebude zobrazeno.
2.4.2. Šířka
- Šířka tlačítka uvedená v pixelech.
- Vyplněná šířka „0“ nebo „1“ tlačítko skryje; prázdná šířka nechá rozhodnutí na prohlížeči, který ji odvodí od popisku.
2.4.3. Klient
- Pole „Klient“ určuje seznam javascriptových příkazů, které se vykonají po stisknutí tlačítka. Rozbalovací seznam nabízí následující často používané javascriptové funkce:
- Opravdu chcete ... ? – return jsConfirm(this, 'Opravdu chcete ... ?');
- AJAX... – return bt_Eval(this, 'ngef.aspx?test', 'evalFunction');
- control_SetValue – control_SetValue(#ng_#, 0);
- Začíná-li pole „Klient“ příkazem control_SetValue(#ng_#, 0);, kde #ng_# je identifikátor tohoto ovládacího prvku, zobrazí se tlačítko jako ikona křížku pro vymazání hodnoty. Nadpis tlačítka se zobrazuje jako tooltip ikony.
2.4.4. Server
- Je-li pole „Klient“ prázdné, bude po stisknutí tlačítka spuštěn skript na straně serveru. Obsahuje-li pole „Klient“ kód, skript se spustí jen tehdy, vrátí-li kód příkazem „return“ pravdivou hodnotu – kód bez příkazu „return“ skript nespustí. Odkaz „Upravit skript“ slouží k otevření integrovaného grafického návrháře skriptů, ve kterém se definuje skript, resp. serverová část tlačítka.
- Vykonávání javascriptových příkazů lze přerušit příkazem „return false;“, který zamezí i následnému spuštění skriptu na straně serveru.
2.5. Záložka „Nápověda“
2.5.1. Nápověda
- Nápověda je text zobrazovaný napravo od ovládacího prvku v editačním formuláři.
- Nápovědy všech ovládacích prvků začínají na stejné svislé linii v rámci celého editačního formuláře.
- Text – text nápovědy je definován ručně zadaným textovým řetězcem ve víceřádkovém textovém poli pod radio buttonem
- Z dotazu – text nápovědy je definován výsledkem databázového dotazu, který je vyhodnocen při otevření editačního formuláře
- Detailní popis nápovědy je uveden v samostatné příručce Nastavení vzhledu.
2.5.2. Poznámky
- Poznámky slouží pro zadání libovolného textu určeného pro správce aplikace.
2.6. Záložka „Filtr“
2.6.1. Možnosti
- Zobrazit filtr v nahlížecí tabulce
- Zaškrtnutí tohoto pole určuje, zda má být v nahlížecí tabulce umožněno filtrování záznamů podle hodnot přítomných v databázi ve sloupci spojeném s tímto ovládacím prvkem. Rozbalovací seznam filtru je umístěný v záhlaví nahlížecí tabulky pod názvem ovládacího prvku.
- Povolit hromadné změny
- Zaškrtnutí tohoto pole určuje, zda má být v rozbalovacím seznamu filtru k dispozici položka „Přiřadit hodnotu...“, která slouží k přiřazení hodnoty všem vyfiltrovaným záznamům v nahlížecí tabulce.
- Po zvolení této položky dojde k otevření nového okna, ve kterém se zobrazuje ovládací prvek spojený s filtrovaným sloupcem. Pomocí tlačítka „Uložit“ pak lze změnit hodnotu sloupce u všech vyfiltrovaných záznamů v nahlížecí tabulce na zvolenou hodnotu. Aby se v rozbalovacím seznamu filtru zobrazovala položka „Přiřadit hodnotu...“, musí mít nahlížecí tabulka povolené hromadné změny dat.
- Položka „Přiřadit hodnotu...“ se nenabízí u ovládacího prvku nastaveného „Jen ke čtení“ nebo jako „Skryté pole“.
- Je-li na záložce „Obecné“ zaškrtnuto „Spustit OnBeforeSave/OnAfterSave před uložením záznamu do databáze“, ukládá se každý záznam samostatně se spuštěním skriptů. Zamítnou-li skripty uložení některých záznamů, zobrazí se uživateli chybové hlášení prvního z nich a počet chyb vůči počtu všech zpracovávaných záznamů. Obdobně se zobrazí počet záznamů, které uživatel nemá oprávnění uložit.
2.6.2. Počet záznamů na stránce
- Počet záznamů na stránce určuje maximální počet unikátních hodnot, které se ve filtru zobrazí na základě analýzy načtených dat v nahlížecí tabulce ve sloupci spojeném s filtrem. Je-li v datech přítomno více výskytů unikátních hodnot, než je definovaný počet záznamů na stránce, dojde k přerušení analýzy unikátních hodnot v daném sloupci, a ve filtru se zobrazí položka „Načíst hodnoty...“, která pomocí ajaxu vyhodnotí a následně ve filtru zobrazí všechny unikátní hodnoty v daném sloupci a načtených datech v nahlížecí tabulce.
- Samotná nahlížecí tabulka může načítat velké množství dat, anebo filtrovaný sloupec může obsahovat velké množství unikátních hodnot, což má vliv na rychlost sestavení seznamu těchto hodnot. V případech, kdy není důležité hodnoty při generování nahlížecí tabulky analyzovat vůbec, a je dostačující použití funkce „Načíst hodnoty...“, je vhodné nastavit počet záznamů na stránce na hodnotu „0“.
2.7. Záložka „Práva“
2.7.1. Práva
- Práva definují seznam uživatelských skupin a uživatelů, kteří mají oprávnění na zobrazení ovládacího prvku v editačním formuláři, a na zobrazování hodnot tohoto ovládacího prvku všude jinde v aplikaci.
- Uživatelé, kteří nemají práva na ovládací prvek,
- nevidí ovládací prvek ani jeho hodnotu v editačním formuláři a ovládací prvek se nevykreslí ani do zdrojového kódu stránky v internetovém prohlížeči,
- nemohou zobrazit sloupec spojený s tímto ovládacím prvkem v nahlížecí tabulce nebo jiném vizuálním ovládacím prvku určeném pro prohlížení dat,
- mohou vytvořit záznam v editačním formuláři, ve kterém existuje ovládací prvek, na který nemají práva, hodnota těchto ovládacích prvků je pak nastavena na databázovou hodnotu „null“,
- ve výchozím nastavení nemohou smazat záznam v editačním formuláři, ve kterém existuje ovládací prvek, na který nemají práva; výjimkou je zapnutí možnosti „Vždy povolit mazání vlastníkovi nebo spoluvlastníkovi záznamu“ ve vlastnostech ovládacího prvku „ActionButtons“.
- Správce aplikace může způsobit logickou chybu, kdy se pomocí javascriptové funkce odkazuje na ovládací prvek, který pro některé uživatele nemusí být přístupný z pohledu práv. Proměnná „ng_“ se pak nahradí za hodnotu uloženou v databázi v tomto ovládacím prvku namísto odkazu na objekt samotného ovládacího prvku. Tato chyba ve většině případů zastaví načítání editačního formuláře, ten se celý disabluje, a uživateli je zobrazeno hlášení, že má kontaktovat administrátora aplikace. Tento druh chyby je možný z části eliminovat pomocí reportu „Ovládací prvky (JavaScript + nedostatečná práva)“. Nahrazená hodnota je přitom součástí zdrojového kódu stránky – identifikátor ovládacího prvku s citlivou hodnotou proto není vhodné používat v JavaScriptu ani v ovládacím prvku „HTML“.
2.7.2. Zobrazit hodnotu
- Zobrazení hodnoty ovládacího prvku může být omezeno pouze na uživatele, kteří daný databázový záznam vytvořili, anebo jsou nastaveni jako spoluvlastníci všech záznamů v nastavení editačního formuláře.
- Radio button obsahuje následující typy zobrazení hodnoty:
- Všem uživatelům – ovládací prvek včetně jeho hodnoty bude zobrazen všem uživatelům, kteří mají právo na daný ovládací prvek
- Pouze vlastníkovi nebo spoluvlastníkovi záznamu – ovládací prvek včetně jeho hodnoty bude v editačním formuláři zobrazen pouze uživatelům, kteří mají právo na daný ovládací prvek a zároveň smějí záznam upravit – uživateli s administrátorským oprávněním, spoluvlastníkovi a vlastníkovi záznamu, je-li „Práva na editaci“ nastaveno na „Vlastník nebo spoluvlastník záznamu“. Ovládací prvek nelze zobrazit jako sloupec nahlížecí tabulky. Detailní popis zobrazení hodnoty v ostatních ovládacích prvcích je uveden v samostatné příručce Editační formulář.
2.7.3. Nahradit práva ostatním ovládacím prvkům
- Funkce „Nahradit práva ostatním ovládacím prvkům“ slouží pro sjednocení práv v rámci celého editačního formuláře u ovládacích prvků, které spolu z pohledu práv souvisí.
- Díky odkazu „Zobrazit...“ je možné zobrazit seznam všech ovládacích prvků v editačním formuláři včetně nastavení práv těchto ovládacích prvků. U každého ovládacího prvku je zobrazeno zaškrtávací tlačítko, kterým je možné ovládací prvek vybrat. Při uložení ovládacího prvku se následně nastaví stejná práva i těmto vybraným ovládacím prvkům.
- Alternativou pro sjednocení práv v rámci celého editačního formuláře je zobrazení reportu dostupného ze záložky „Práva podřízených objektů“ v nastavení editačního formuláře.
2.8. Záložka „Administrace“
- Záložka „Administrace“ se zobrazuje pouze u existujících ovládacích prvků.
2.8.1. Identifikátor
- Identifikátor určuje název databázového sloupce, do kterého se v databázi ukládají hodnoty zadané prostřednictvím ovládacího prvku v editačním formuláři.
- Identifikátor je odvozen od názvu ovládacího prvku. Začíná prefixem „ng_id“, a dále obsahuje alfanumerické znaky použité v názvu ovládacího prvku (systémové ovládací prvky prefix „ng_id“ neobsahují). Při změně názvu ovládacího prvku je k dispozici tlačítko „Opravit“, které slouží k opravě identifikátoru, a tedy i přejmenování databázového sloupce v databázi. Pro přehlednost a eliminaci případných nedorozumění se doporučuje udržovat identifikátor v souladu s názvem ovládacího prvku. Pokud do databáze přistupují i externí aplikace a například čtou nebo zapisují data do tohoto sloupce, je nutné změnu identifikátoru naplánovat až na vhodnou dobu.
2.8.2. Plný identifikátor
- Plný identifikátor ovládacího prvku obsahuje i identifikátor editačního formuláře, a používá se v tiskových šablonách.
2.8.3. Index
- Zaškrtnutí tohoto pole určuje, zda má být sloupec spojený s tímto ovládacím prvkem v databázi indexovaný. Do textového pole umístěného pod zaškrtávacím tlačítkem je možné definovat i názvy (identifikátory) dalších sloupců, které mají být ve sdruženém indexu s tímto databázovým sloupcem – mají být součástí klíče indexu.
- U databáze MSSQL je možné definovat také sloupce „INCLUDE“, které se připojí k indexu. Nejsou ale součástí klíče indexu, ale hodnoty daného klíče. Databáze Firebird tuto funkcionalitu neumožňuje.
- Ovládací prvek „ForeignKey“ je ve výchozím nastavení automaticky indexovaný – pro zobrazení hodnoty v nahlížecí tabulce se obvykle joinuje s databázovou tabulkou, na kterou se cizí klíč odkazuje.
2.8.4. Hledání v nahlížecí tabulce
- Hledání určuje, zda mají být záznamy v nahlížecí tabulce po zadání hledaného výrazu či slovního spojení v databázi ve sloupci spojeném s tímto ovládacím prvkem vyhledávané pomocí operátoru „=“.
- Zakázat – hledání v tomto sloupci je zakázáno, a v nahlížecí tabulce se neobjevuje zaškrtávací tlačítko, kterým by bylo možné sloupec tabulky zahrnout do seznamu prohledávaných sloupců.
- Povolit – hledání v tomto sloupci je povoleno, a v nahlížecí tabulce se objevuje zaškrtávací tlačítko, kterým je možné sloupec tabulky zahrnout do seznamu prohledávaných sloupců.
2.8.5. Ostatní
- Aktuální hodnota v databázi
- Textové pole zobrazuje aktuální hodnotu právě otevřeného záznamu v editačním formuláři v daném ovládacím prvku, s možností změny této hodnoty.
- Změnit typ na
- Rozbalovací seznam nabízí typy ovládacích prvků, na které je podporována konverze ovládacího prvku včetně automatické konverze dat přítomných v databázové tabulce.
2.8.6. Statistika
- Statistika zobrazuje agregovanou informaci o využívání ovládacího prvku napříč celou aplikací.
- Pomocí tlačítka „Statistika“ se zobrazí detailní report všech míst, kde je ovládací prvek použitý nebo referencovaný, včetně možnosti otevření nastavení takového místa či ovládacího prvku.
- Před každou změnou typu ovládacího prvku nebo datového typu, případně před každým smazáním ovládacího prvku z editačního formuláře, se doporučuje důkladně projít statistku ovládacího prvku, a eliminovat případná nedorozumění.
- Před každým smazáním ovládacího prvku z editačního formuláře se automaticky spustí vyhodnocení statistiky. Pokud je ovládací prvek někde v aplikaci používán nebo referencován, je nutné smazání ovládacího prvku znovu potvrdit.
2.9. Picker
- Pro konfiguraci pickeru na tomto ovládacím prvku slouží ikona lupy, umístěná v levém dolním rohu dialogu.
- Je-li v nastavení pickeru zaškrtnuto „Povolit otevírání záznamů“ a ovládací prvek se zobrazuje jako rozbalovací seznam, zobrazí se vedle seznamu ikona „Upravit záznam...“, která otevře vybraný záznam v jeho editačním formuláři. Není-li vybrána žádná hodnota, kliknutí na ikonu nic neprovede.
- Detailní popis pickeru je uveden v samostatné příručce Picker.
2.10. Tlačítka „Uložit“, „Uložit a pokračovat v editaci“, „Kopírovat“, „Smazat“ a „Zavřít“
- Tlačítko „Uložit“ – Uložení změn v nastavení ovládacího prvku.
- Tlačítko „Uložit a pokračovat v editaci“ – Uložení změn v nastavení ovládacího prvku a ponechání nastavení otevřeného pro další úpravy.
- Tlačítko „Kopírovat“ – Vytvoření nové kopie aktuálního ovládacího prvku se shodným nastavením, avšak s novým jedinečným identifikátorem.
- Tlačítko „Smazat“ – Trvalé odstranění ovládacího prvku.
- Tlačítko „Zavřít“ – Zavření dialogu s nastavením ovládacího prvku bez uložení změn.
3. Příklady
3.1. Javascriptové funkce
- var s = control_GetValue(#ng_#);
- var n = jsN(control_GetValue(#ng_#));
- var s = #ng_#.value;
- var n = jsN(#ng_#.value);
- control_SetValue(#ng_#, s);
- control_SetValue(#ng_#, 123);
- control_SetValue(#ng_#, 0);
- fk_Update(#ng_#);
- control_Disable(#ng_#); // Obecná javascriptová funkce pro všechny databázové ovládací prvky
- control_Disable(#ng_#, disableLink); // Obecná javascriptová funkce pro všechny databázové ovládací prvky
- fk_Disable(#ng_#);
- fk_Disable(#ng_#, disableLink);
- control_Enable(#ng_#); // Obecná javascriptová funkce pro všechny databázové ovládací prvky
- fk_Enable(#ng_#);
- picker_Open(#ng_#);
3.2. Serverové funkce
- SCHEDULEDEFAULTVALUE(ng_, #ng_#)