Report Manager - Template
From PlcWiki
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 (seznamů) formuláře function isReloadDependency(report, param) { if (param == 'from' || param == 'to' || param == 'workplace') { return true; } return false; }