1. Základní informace
1.1. Popis ovládacího prvku
AutoSum je jednořádkové textové pole libovolné šířky, které slouží k automatickému vyhodnocení agregační funkce na předem definovaná data z databáze. Mezi tyto agregační funkce patří počet, suma, průměr, maximální a minimální hodnota. K vyhodnocení agregační funkce dochází při otevření záznamu v editačním formuláři (u existujícího záznamu se vypočítaná hodnota rovnou uloží do databáze), po spuštění skriptu tlačítka v editačním formuláři (u uloženého záznamu se po úspěšném dokončení neprázdného skriptu vypočítaná hodnota rovnou uloží do databáze, i když tlačítko záznam neukládá, a to i ve formuláři pouze pro čtení), nebo pomocí serverové funkce „UPDATEAUTOSUM“. Při uložení editačního formuláře se ukládá hodnota vypočítaná serverem; hodnota odeslaná internetovým prohlížečem (například změněná javascriptem) se ignoruje. Selže-li výpočet, uloží se do databáze hodnota „null“, a to v editačním formuláři i ve funkci „UPDATEAUTOSUM“.
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í autosumu má za následek nevratné smazání databázového sloupce spojeného s tímto autosumem v databázi, a tudíž i ke smazání jeho hodnot ve všech záznamech databázové tabulky.
2. Seznam záložek v dialogu nastavení ovládacího prvku
- Obecné – Nastavení obecných vlastností
- 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 textového pole.
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. Jednotka
- Jednotka určuje symbol (například „%“), který se všude v aplikaci zobrazuje spolu s hodnotou ovládacího prvku. Symbol je vždy umístěn napravo vedle samotné hodnoty, oddělený mezerou.
- Součástí jednotky může být i formát desetinného čísla, kterým je možné vynutit automatické zaokrouhlování hodnoty (například „{0.00}“ nebo „{0.00}%“).
- Spolu s jednotkou je možné definovat šířku místa určeného pro jednotku v editačním formuláři tak, aby byl udržován prostor mezi jednotkou umístěnou napravo vedle textového pole, a mezi nápovědou ovládacího prvku umístěnou napravo vedle jednotky.
- Vypočítaná hodnota s datovým typem „Desetinné číslo“ nebo „Měna“ se v editačním formuláři zobrazuje s oddělenými tisíci (například „1 234 567,89“) automaticky – na rozdíl od ovládacího prvku TextBox se toto chování nenastavuje.
2.1.5. Šířka
- Šířka ovládacího prvku uvedená v pixelech.
2.1.6. Vypočítat
- Pole „Vypočítat“ určuje agregační funkci, kterou autosum vypočítává.
- Rozbalovací seznam obsahuje následující typy agregačních funkcí:
- Počet
- Suma
- Průměr
- MAX
- MIN
- Agregační funkce se vyhodnocují takto:
- Počet – počet vyplněných hodnot sloupce,
- Suma – součet hodnot; u sloupce s datumem vrací počet vyplněných hodnot,
- Průměr – součet hodnot vydělený počtem všech vyhovujících záznamů, prázdné hodnoty se tedy započítávají jako nula; u sloupce s datumem vrací datum uprostřed mezi nejmenší a největší hodnotou,
- MAX a MIN – největší, resp. nejmenší hodnota.
- U sloupce s datumem se výsledek funkcí Průměr, MAX a MIN ukládá do databáze jako binární reprezentace data (číslo), ne jako datum. Ruční SQL dotaz, čtení dat přes MCP server, externí aplikace i C# kód proto pracují s číslem, které je nutné na datum převést, v C# metodou „DateTime.FromBinary“. Hodnotu prvku „AutoSum“ přiřazenou bez aritmetického operátoru převedou na datum samy skriptové příkazy „Nový záznam“ (do sloupce typu Date nového záznamu), „Přiřadit hodnotu“ (do ovládacího prvku nebo proměnné typu Date) a „Přiřadit hodnotu z dotazu“ a „Přiřadit více hodnot z dotazu“ (do ovládacího prvku typu Date). Detailní popis převodu je uveden v samostatné příručce Návrhář skriptů.
- Výsledek agregační funkce lze vynásobit nebo vydělit, případně k němu přičíst nebo odečíst číselnou konstantu. Zadávací pole napravo vedle rozbalovacího seznamu slouží k definici tohoto výpočtu viz následující příklady:
- „+123“
- „-123“
- „*123“
- „/123“
- Zadávací pole může obsahovat libovolný výraz připojený za vypočítanou hodnotu, včetně proměnných (#ng_...#). Zakončení „+CEILING“, „+FLOOR“ a „+ROUNDn“ (n je počet desetinných míst) přebíjí nastavení pole „Zaokrouhlení“. Je-li zdrojovým sloupcem datum, výraz ani zaokrouhlení se neuplatní, a to ani u funkcí Počet a Suma, jejichž výsledkem je počet hodnot.
2.1.7. Ze sloupce
- Definice sloupce, který autosum používá k výpočtu hodnoty.
2.1.8. Databázové tabulky
- Definice databázové tabulky, ve které se nachází sloupec, který autosum používá k výpočtu hodnoty.
2.1.9. Vyhovující podmínkám
- Definice podmínek, které omezují množinu dat, ze kterých je výsledná hodnota vypočítána.
2.1.10. Připojení
- Definice připojení, které jsou sestaveny pomocí klauzule „JOIN“.
2.1.11. Zaokrouhlení
- Definice zaokrouhlení vypočítané hodnoty.
- Rozbalovací seznam obsahuje následující typy zaokrouhlení:
- Nezaokrouhlovat
- Nahoru
- Dolů
- Celé číslo
- 1 desetinné místo
- 2 desetinná místa
- 3 desetinná místa
- 4 desetinná místa
- 5 desetinných míst
- 6 desetinných míst
- 7 desetinných míst
- 8 desetinných míst
- „Nahoru“ zaokrouhluje vždy směrem od nuly a „Dolů“ vždy směrem k nule – záporné číslo se tedy „Nahoru“ zaokrouhlí na nižší a „Dolů“ na vyšší celé číslo.
2.1.12. Zarovnání
- Zarovnání určuje polohu textu uvnitř samotného textového pole v editačním formuláři, a polohu hodnot ovládacího prvku v nahlížecí tabulce, pokud je ovládací prvek zvolen jako jeden ze sloupců nahlížecí tabulky.
- Rozbalovací seznam obsahuje následující typy zarovnání:
- Vlevo
- Na střed
- Vpravo (výchozí)
2.1.13. Možnosti
- Sčítat pouze vnořené záznamy
- Zaškrtnutí tohoto pole určuje, zda má být výsledná hodnota vypočítána pouze ze vnořených záznamů k aktuálně otevřeném záznamu v editačnímu formuláři.
- Vnořené záznamy se vybírají jen podle rodičovského záznamu (sloupec „pid“), bez ohledu na rodičovský formulář (sloupec „pform“). U nového, dosud neuloženého záznamu je výsledná hodnota 0.
- 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ě vyplněné 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.
- Skrýt součet sloupce v nahlížecí tabulce
- Zaškrtnutí tohoto pole určuje, že se v zápatí nahlížecí tabulky nezobrazí součet hodnot ovládacího prvku ze všech vyfiltrovaných záznamů nahlížecí tabulky.
- Aby se v nahlížecí tabulce zobrazovaly součty sloupců, musí mít nahlížecí tabulka povolené zobrazování součtů sloupců. Výchozí nastavení zobrazování sloupců se přebírá přímo z vlastností nahlížecí tabulky, nicméně každý uživatel si může sám toto nastavení změnit ve svém personalizovaném nastavení nahlížecí tabulky.
- 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 „Nápověda“
2.2.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.2.2. Poznámky
- Poznámky slouží pro zadání libovolného textu určeného pro správce aplikace.
2.3. Záložka „Filtr“
2.3.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
- U ovládacího prvku AutoSum je tato možnost vždy nedostupná – hodnotu vypočítávanou autosumem nelze hromadně přiřadit.
2.3.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.4. Záložka „Práva“
2.4.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.4.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.4.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.5. Záložka „Administrace“
Záložka „Administrace“ se zobrazuje pouze u existujících ovládacích prvků.
2.5.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_“, a dále obsahuje alfanumerické znaky použité v názvu ovládacího prvku (systémové ovládací prvky prefix „ng_“ 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.5.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.5.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.
2.5.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 „rovná se“.
- 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.5.5. Ostatní
- 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.5.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.6. 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
3.1.1. Obecné funkce
- var s = control_GetValue(#ng_#);
- var n = jsN(control_GetValue(#ng_#));
- var n = jsN(#ng_#.value);
3.1.2. Celá čísla
- var s = jsNumberInWords(12345678, 'cs');
3.1.3. Desetinná čísla
- var s = jsNumberInWords(12345.678, 'cs');
- var s = jsFormatDouble(1100.5412, 'kg');
3.1.4. Měny
- var s = jsNumberInWords(12345.678, 'cs');
- var s = jsFormatCurrency(1100.5412, 'Kč');
3.2. Serverové funkce
3.2.1. Obecné funkce
- UPDATEAUTOSUM(id, form)
- UPDATEAUTOSUM(1;2;3, form)
3.2.2. Celá čísla
- SUBSTRACTINTEGERS(10, 1)
3.2.3. Desetinná čísla
- COMPAREDOUBLE(1, <, 2, Ano, Ne)
- FORMATDOUBLE(1000)
- FORMATDOUBLE(1000, EUR)
3.2.4. Měny
- FORMATCURRENCY(1000)
- FORMATCURRENCY(1000, EUR)