Report Manager - Template
From PlcWiki
m (→Header) |
m (→Extensions) |
||
(16 intermediate revisions not shown) | |||
Line 2: | Line 2: | ||
Šablona používá systém [[http://freemarker.sourceforge.net/index.html FreeMarker]] a je součástí aplikace [[Report Manager]], která zobrazuje její výsledky. | Šablona používá systém [[http://freemarker.sourceforge.net/index.html FreeMarker]] a je součástí aplikace [[Report Manager]], která zobrazuje její výsledky. | ||
+ | |||
+ | Jednoduchý příklad: | ||
+ | |||
+ | <pre> | ||
+ | -- T: YN bool, string str | ||
+ | -- Hello Template! | ||
+ | |||
+ | select 1 AS id <#if YN??> , '${YN}' AS YN</#if> <#if string??> , '${string}' AS string_value</#if>; | ||
+ | </pre> | ||
== Header == | == Header == | ||
+ | |||
+ | Každá šablona má svoji hlavičku. Příklad: | ||
[[File:Header ftl.png]] | [[File:Header ftl.png]] | ||
Line 12: | Line 23: | ||
# Lookup databáze | # Lookup databáze | ||
# Autorizace | # Autorizace | ||
- | # Popis šablony | + | # Popis šablony (podtržítko na začátku znamená skrytou šablonu) |
=== Vstupní parametry === | === Vstupní parametry === | ||
+ | |||
+ | Parametry jsou odděleny čárkou, musí být na jednom řádku uvozeným '--T: ' a začínají názvem, který je zároveň proměnnou v šabloně. Příklad některých parametrů: | ||
+ | |||
+ | -- T: YN bool, string str, integer int, time time, date date, decimal dec, string_array str[Cat,Dog,Sneak], multiple_pick mstr[Leica,Pentax,Minolta,Nikon,Silvestri] | ||
+ | |||
+ | Speciální případ parametru je pole naplněné jinou šablonou. Příklad: | ||
+ | |||
+ | workplace mstr[ref:_workplaces.ftl] | ||
+ | |||
+ | Šablona, která má naplnit pole, se uvodí prefixem 'ref:_'. Soubor šablony se v tomto příkladu jmenuje 'workplaces.ftl'. | ||
=== Autorizace === | === Autorizace === | ||
+ | |||
+ | Na jednom řádku uvozeným '-- R: ' jsou uvedeny potřebné role oddělené čárkou. Tyto role jsou po úspěšném ověření dostupné jako proměnná v šabloně. | ||
+ | |||
+ | Zpracování autorizace na straně serveru: | ||
+ | |||
+ | <pre> | ||
+ | boolean auth = GlobalContainer.authorize(user, "ReportBox", right); | ||
+ | if (auth) { | ||
+ | String conf = GlobalContainer.getPrivilegeConfig(user, "ReportBox", right); | ||
+ | params.put(right, conf == null? "*":conf); | ||
+ | } | ||
+ | </pre> | ||
== i18n == | == i18n == | ||
+ | |||
+ | Jednotlivé popisky sloupců a parametrů reportu jsou řešeny ''properties'' soubory, které mají stejný název jako šablona, ke které patří. | ||
== Extensions == | == Extensions == | ||
+ | |||
+ | Extenze je rozšířením klienta a je uložena v souboru 'client_extension.js'. Automaticky se zpracovávají dvě metody: | ||
+ | |||
+ | <pre> | ||
+ | // formátování nebo změna hodnoty parametru formuláře | ||
+ | function onUpdateInput(report, param, value) { | ||
+ | if (report == 'product_list.ftl' && param == 'knr') { | ||
+ | return onUpdateInputKnr(value); | ||
+ | } | ||
+ | return value; | ||
+ | } | ||
+ | |||
+ | // přenačtení hodnot formuláře v závislosti na změně jiného parametru | ||
+ | function isReloadDependency(report, param) { | ||
+ | if (param == 'from' || param == 'to' || param == 'workplace') { | ||
+ | return true; | ||
+ | } | ||
+ | return false; | ||
+ | } | ||
+ | </pre> |
Current revision as of 07:54, 21 March 2013
Contents |
Intro
Šablona používá systém [FreeMarker] a je součástí aplikace Report Manager, která zobrazuje její výsledky.
Jednoduchý příklad:
-- T: YN bool, string str -- Hello Template! select 1 AS id <#if YN??> , '${YN}' AS YN</#if> <#if string??> , '${string}' AS string_value</#if>;
Header
Každá šablona má svoji hlavičku. Příklad:
Význam jednotlivých řádků:
- Vstupní parametry, ze kterých se generují formulářové prvky
- Lookup databáze
- Autorizace
- Popis šablony (podtržítko na začátku znamená skrytou šablonu)
Vstupní parametry
Parametry jsou odděleny čárkou, musí být na jednom řádku uvozeným '--T: ' a začínají názvem, který je zároveň proměnnou v šabloně. Příklad některých parametrů:
-- T: YN bool, string str, integer int, time time, date date, decimal dec, string_array str[Cat,Dog,Sneak], multiple_pick mstr[Leica,Pentax,Minolta,Nikon,Silvestri]
Speciální případ parametru je pole naplněné jinou šablonou. Příklad:
workplace mstr[ref:_workplaces.ftl]
Šablona, která má naplnit pole, se uvodí prefixem 'ref:_'. Soubor šablony se v tomto příkladu jmenuje 'workplaces.ftl'.
Autorizace
Na jednom řádku uvozeným '-- R: ' jsou uvedeny potřebné role oddělené čárkou. Tyto role jsou po úspěšném ověření dostupné jako proměnná v šabloně.
Zpracování autorizace na straně serveru:
boolean auth = GlobalContainer.authorize(user, "ReportBox", right); if (auth) { String conf = GlobalContainer.getPrivilegeConfig(user, "ReportBox", right); params.put(right, conf == null? "*":conf); }
i18n
Jednotlivé popisky sloupců a parametrů reportu jsou řešeny properties soubory, které mají stejný název jako šablona, ke které patří.
Extensions
Extenze je rozšířením klienta a je uložena v souboru 'client_extension.js'. Automaticky se zpracovávají dvě metody:
// formátování nebo změna hodnoty parametru formuláře function onUpdateInput(report, param, value) { if (report == 'product_list.ftl' && param == 'knr') { return onUpdateInputKnr(value); } return value; } // přenačtení hodnot formuláře v závislosti na změně jiného parametru function isReloadDependency(report, param) { if (param == 'from' || param == 'to' || param == 'workplace') { return true; } return false; }