Některé seznamy je možné konfigurovat pomocí XML formulářů. Konfigurace se použije pro všechny uživatele Portálu.
Ukázka nastavení seznamu lékařských prohlídek - XML formulář s popisem "config_browserlekarskeprohlidky" :
<?xml version="1.0"?> <config showFooter="1"> <style> .poznamka { color: pink; } </style> <column code="col-line" visible="1" /> <column code="col-datum-vzniku" addClass="background-orange" /> <column code="col-cas-rezervace" visible="0" /> <column code="col-datum-rezervace" visible="0" /> <column code="col-vysledek" align="left" footer="F-Výsledek"/> <column code="col-detail" visible="1" /> <column code="col-jmeno" htmlConvert="1" before="col-datum-vzniku"/> <column code="col-prijmeni" after="col-jmeno" visible="1" addClass="font-weight-bold"/> </config>
XML formulář musí mít popis config_<kod-seznamu>. Kód seznamu lze zjistit v HTML zdroji v atributu data-code
tabulky.
V tomto příkladě je to "config_browserlekarskeprohlidky".
Stejným způsobem lze zjistit kódy jednotlivých sloupců - jsou uloženy v atributu data-code
záhlaví sloupce th.
Některé sloupce mohou být ve výchozím nastavení skryté. Jejich kódy jsou vypsány v atributu data-invisible-fields
tabulky.
Je možné nastavit tyto parametry seznamu (pomocí atributů hlavního tagu config
nebo jako vnořené tagy):
noHeader="1"
- vypne/zapne zobrazení záhlaví seznamu (Pozor! Hodnota 1 vypíná zobrazení)showFooter="1"
- zapne/vypne zobrazení zápatí seznamumaxPageRows="20"
- nastaví maximální počet řádků na stránceshowMessages="0"
- vypne zobrazení případných chybových hlášektableId="..."
- nastaví HTML id tabulkyrowClickLink="?menuid=...."
- nastaví link, který se zobrazí po kliknutí na řádek tabulkycssClass="..."
- nastaví css třídu tabulkytitle="Nadpis seznamu"
- nastaví nadpis seznamusqlFilter="..."
- doplní filtr do SQL dotazu seznamu
Konfigurace jednotlivých sloupců se provádí pomocí vnořených tagů column
. Pomocí atributu code
se určí konfigurovaný sloupec.
Pro sloupce lze nastavit tyto vlastnosti:
type="typ_sloupce"
- typ sloupce. Může být default
(to je výchozí hodnota), hidden
, line
, text
, select
, url
, comment
profil="kody-profilu"
- Kódy uživatelských profilů, pro které se nastavení sloupce uplatní. Je možné zadat více kódů oddělených středníkem.before="kod-jineho-sloupce"
- přesune tento sloupec před zadaný sloupec (před sloupec se zadaným kódem kod-jineho-slopce)after="kod-jineho-sloupce"
- přesune tento sloupec za zadaný sloupec (za sloupec se zadaným kódem kod-jineho-slopce)align="right"
- Nastaví zarovnání left, right nebo centersortSQL="jmeno pole"
- určí jméno SQL pole, podle kterého se seznam seřadí při řazení podle tohoto sloupcesortSQLDesc="jmeno pole"
- totéž jako sortSQL, ale použije se při sestupném řazeníexcludeFromGroupBy="1"
- pole nebude v "GROUP BY" části SQL dotazu.format="..."
- určuje formát zobrazení pole.
(date, time, timestamp, datetime, year, finedate, finedatetime, weekday, weekdayshort, kc, curr, anone,
int, float, number, number0, number1, number_1, number2, number_2, hodiny, minuty, sekundy, timeofday
)link="..."
- link, který se zobrazí po kliknutí na polelinkAttributes="..."
- HTML atributy odkazu, například linkAttributes="target='_blank'"
style="..."
- css stylclass="..."
- css třídaaddClass="..."
- css třída, která se přídá k již nastavené (výchozí) hodnotěheader="..."
- nadpis sloupcefooter="..."
- patička sloupceshowSum="0"
- určuje, jestli se má v patičce zobrazit součettext="..."
- text, který se přímo zobrazí - používá se například u prokliku na detail záznamuvisible="0"
- skryje/zobrazí sloupecwrap="1"
- zapne/vypne zalamování sloupceordering="0"
- zakáže/povolí řazení podle tohoto sloupcehtmlConvert="0"
- vypíná/zapíná konvertovaní HTML textu (nahrazování speciálních znaků jejich entitami, např znak "<" nahradí entitou "<")translationPrefix="..."
- umožňuje přeložit texty z databáze. K hodnotě se připojí prefix a výsledný text se pak vyhledá v překladechtitleTranslationPrefix="..."
- umožňuje přeložit text titulkutranslationValueIndex="index_nebo_kod_pole_pro_preklad"
- index nebo kód pole, které určuje hodnotu pro překlad - hodnota tohoto pole se připojí k (title)translationPrefixsqlFieldIndex2="index_nebo_kod_pole_2"
- index nebo kód pole, jehož hodnota se zobrazí v závorce za hodnotou konfigurovaného poletitleFieldIndex="index_nebo_kod_pole"
- index nebo kód pole, jehož hodnota se zobrazí jako title (tj. text, který se zobrazí po najetí myší)translateText="0/1"
- umožňuje zapnout přímý překlad hodnot z databáze - v překladech se vyhledá načtená hodnota (bez doplnění prefixu)
Je možné přidat i úplně nový sloupec. Ten může být přímo z tabulky, která už je v dotazu nebo lze pomocí subselectu vybrat i data z jiných tabulek.
Příklad pro zobrazení počtu pracovních poměrů osoby:
<column header="Počet PP"> <sqlFieldName>(SELECT COUNT(*) FROM PracovniPomer P2 WHERE P2.RC = PracovniPomer.RC) AS PocetPP</sqlFieldName> </column>
Příklad zobrazení odkazu v seznamu školení (XML config_browserskoleni). Pokud není zadán text, zobrazí se přímo URL. Pokud je zadán, zobrazí se tento text. Speciální hodnota "IMG"
zobrazí obrázek.
<column sqlFieldName="D.URLexternihoSkoleni" type="url" text="IMG" linkAttributes="target='_blank'"/>
<column type="comment" sqlFieldName="Poznamka" addClass="poznamka" headerColSpan="1" header="Poznámka:"/>Zobrazí obsah datového pole "Poznamka" pod každým řádkem.
V konfiguraci je možné nadefinovat texty pro překlad do různých jazyků. Budou platné jen pro HTML stránku s příslušným seznamem.
<translation id="SC_dopravni_prostredek" text="Dopravní prostředek" text-eng="Type of transport" />
U některých seznamů je možné konfigurovat filtrovací formulář nad seznamem (výběr rozdělení atd.) a případně přidávat nové filtry.
<translation id="SC_dopravni_prostredek" text="Dopravní prostředek" text-eng="Type of transport" /> <filterform> <filter name="jenzahranicnisc"> <!-- změní barvu pozadí volby "Jen zahraniční" ve filtru u seznamu služebních cest --> <option key="1" cssClass="background-lightgray padding-all" /> </filter> <!-- Vytvoří nový filtr pro výběr služebních cest podle cílového státu. --> <filter name="SC_cilovy_stat" type="options" caption="Cílový stát"> <optionsSql>SELECT Kod, Popis FROM Stat WHERE PovolitVeSluzCeste = 1 ORDER BY Popis</optionsSql> <option key="">Vše</option> <sqlFilter>CilovyStat = </sqlFilter> </filter> <!-- Vytvoří nový filtr pro výběr služebních cest podle dopravního prostředku. Jednotlivé volby jsou nadefinovány pomocí tagů option. Některé volby mají svůj vlastní SQL výraz, jiné použijí sqlFilter zadaný u tagu filter. --> <filter name="SC_dopravni_prostredek" caption="SC_dopravni_prostredek" sqlFilter="SluzebniCesta.DopravniProstredek = "> <option key="">Vše</option> <option key="NULL" cssClass="color-red" sqlFilter="SluzebniCesta.DopravniProstredek IS NULL">nezadáno</option> <option key="AUS">Služebák</option> <option key="AUV">Vlastní vozidlo</option> <option key="X" cssClass="font-italic" sqlFilter="SluzebniCesta.DopravniProstredek NOT IN ('AUS', 'AUV')" title="Je zadáno, ale není to AUS ani AUV">ostatní</option> </filter> <!-- Vytvoří nový filtr pro výběr služebních cest, které mají vyplněný alespoň jeden řádek. Volbou showSelectedItem="0" se zajistí, že je filtr "přepínací" (vybraná volba se nezobrazí a zobrazuje se jen odkaz pro změnu nastavení) --> <filter name="jen_s_radkem_sc" defaultValue="0" showSelectedItem="0"> <option key="1" sqlFilter="EXISTS (SELECT * FROM RadekSluzebniCesty WHERE SluzebniCesta_ID = SluzebniCesta.Id)">Jen s řádky</option> <option key="0">I bez řádků</option> </filter> <!-- Vytvoří nový filtr pro výběr služebních cest, které mají vyplněný alespoň jeden řádek účtování. Zobrazí jej jako checkbox. --> <filter name="jen_s_uctovanim_sc" type="checkbox" caption="Jen s řádkem účtování"> <sqlFilter>EXISTS (SELECT * FROM RadekUctovaniSCesty WHERE SluzebniCesta_ID = SluzebniCesta.Id) OR DatumCasOd >= GETDATE()</sqlFilter> </filter> </filterform>
Základní nastavení formuláře lze provést pomocí atributů tagu <filterform>
:
obdobiPovinne="1"
- určuje, jestli je výběr období povinnýobdobiNeboDatumPovinne="1"
- určuje, jetli je povinný výběr období nebo datumů (tj. musí být nastaven aspoň jeden z těchto filtrů)jenOtevreneObdobi="1"
- určuje, jestli se nabídnou jen otevřená obdobíshowObdobi="1"
- určuje, jestli se zobrazí výběr obdobíshowVariantni="1"
- určuje, jestli se zobrazí výběr variabilního obdobíshowDatumOdDo="1"
- určuje, jestli se zobrazí výběr datum od - dodatumOdDoPovinne="1"
- určuje, jestli je zadání datumů povinnédatumOdDo_CheckboxFirst="1"
- určuje, jestli se checkbox pro zapnutí filtru datumů zobrazí na začátkupovolitPrazdneDatumDo="1"
- určuje, jestli je možné zadat ve filtru prázdné datum dozobrazitDnyObdobi="1"
- určuje, jestli se zobrazí seznam odkazů (odkaz pro každý den vybraného období)showRok="1"
- určuje, jestli se zobrazí filtr výběr kalendářního rokunadpisDatumOdDo="... text ..."
- umožňuje nastavit nadpis filtru pro datum od-doshowRozdeleni="1"
- určuje, jestli se zobrazí filtr pro výběr rozděleníkodTypuRozdeleni="<kod_typu>"
- určuje kód typu rozdělení pro filtrování (standardně se převezme z nastavení Portálu)jenVlastniRozdeleni="1"
- určuje, jestli uživatel může vybírat jen z vlastních rozděleníshowVcetnePodrizenychRozdeleni="1"
- určuje, jestli se zobrazí volba pro filtrování vlastních/podřízených atd.filtrRozdeleni="... sql ..."
- umožňuje nastavit SQL filtr pro načtení seznamu rozdělenípravaRozdeleni="typ-prava"
- umožňuje vybrat typ práva pro načtení seznamu rozděleníshowRozdeleni2="1"
- určuje, jestli se zobrazí filtr pro výběr rozdělení 2kodTypuRozdeleni2="<kod_typu>"
- určuje kód typu rozdělení 2 pro filtrování (standardně se převezme z nastavení Portálu)jenVlastniRozdeleni2="1"
- určuje, jestli uživatel může vybírat jen z vlastních rozděleníshowVcetnePodrizenychRozdeleni2="1"
- určuje, jestli se zobrazí volba pro filtrování vlastních/podřízených atd.vcetneExternich="1"
- určuje, jestli se zobrazí i externí osobypovolitVsechnyOsoby="1"
- určuje, jestli se umožní zobrazit i všechny osoby (tj. vypnout filtrování podle osoby)osobyFiltr="... sql ..."
- umožňuje nastavit SQL filtr pro načtení seznamu osobformClass="css-class"
- umožňuje nastavit CSS třídu formulářeshowMessages="1"
- určuje, jestli se pod formulářem zobrazí případne chybové nebo informační zprávyskrytTlacitkoNastavit="1"
- umožňuje skrýt tlačítko "Nastavit"
Nastavení jednotlivých filtrů lze provést pomocí atributů tagu <filter>
:
type
- určuje typ filtru (způsob, jakým bude zobrazen). Může mít hodnotu:
sqlFilter
- sqlFiltr, který se použije pro filtrování seznamu podle tohoto filtruname
- jméno filtru - použije se například v URLsessionName
- určuje jméno, pod kterým se hodnota filtru uloží do session - pokud není zadáno, určí se automaticky podle "name"userSettingsName
- určuje jméno, pod kterým se hodnota filtru uloží do uživatelského nastavení - pokud není zadáno, tak se neukládáoptionsSql
- SQL výraz pro načtení voleb z databázeoptionsSqlFilter
- SQL výraz pro odfiltrování voleb při načítání z databáze (má smysl u předdefinovaných filtrů)optionsSqlOrder
- SQL výraz pro seřazení voleb při načítání z databáze (má smysl u předdefinovaných filtrů)optionsTranslationPrefix
- prefix překladových řetězců pro možnost překladu jednotlivých voleb načtených z databázeoptionsSqlOrder2
- SQL výraz pro seřazení voleb v druhém comboboxu (pro typ comboboxes)defaultValue
- výchozí hodnota filtrurowClass
- CSS třída řádku filtru ve formulářiaddRowClass
- CSS třída, která se přidá k CSS třídě řádku filtru ve formulářiaddClass
- CSS třída, která se přidá k existující CSS třídě filtrovacího elementurowId
- HTML id řádkucaption
- Nadpis řádku ve filtrovacím formulářicaption2
- Další text, který se zobrazí za elementemenabled
- umožňuje zapnout/vypnout zobrazení filtrushowCode
- určuje, jestli se v comboboxu zobrazí i kód záznamu načtený z databázeshowSelectedItem
- umožňuje vypnout zobrazení aktuálně vybrané volby - hodí se pro type="links" s dvěmi volbami
Jednotlivé volby pro filtry typu "links" nebo "options" je možné načíst z databáze (nastavením atributu optionsSql),
nebo zadat pomocí vnořených tagů <option>
. Ty mohou mít atributy:
key
- kód volby (použije se v URL a případně v SQL výrazu zadaném v nadřazeném tagu filter
)sqlFilter
- SQL výraz pro odfiltrování záznamů v seznamucssClass
- CSS třída příslušného elementugroup
- pro typ filtru "links" umožňuje seskupovat jednotlivé volby do skupincaption
- zobrazený texttitle
- HTML title elementuenabled
- určuje, jestli je tato konkrétní volba povolena
Pomocí tagu <html>
je možné do stránky vložit libovolný text včetně HTML značek.
Atributem position
tagu html
se nastaví, kde se zadaný text zobrazí:
<html position="head"> ... obsah ... </html>
- text se zobrazí hned pod nadpisem nad filtry<html position="top"> ... obsah ... </html>
- text se zobrazí nad tabulkou - toto je výchozí hodnota<html position="bottom"> ... obsah ... </html>
- text se zobrazí pod tabulkou
Pomocí tagu <xml>
je možné do stránky vložit obsah XML formuláře.
Atributem id
se musí zadat id XML formuláře, který se má zobrazit.
Stejně jako u HTML textu lze atributem position
nastavit, kde se má XML formulář zobrazit.
Ve formuláři jsou nastaveny proměnné z filtru, např.
<xml id="123" position="top"/>