Report Manager - Template

From PlcWiki

(Difference between revisions)
Jump to: navigation, search
m (Formát)
m (Extensions)
 
(20 intermediate revisions not shown)
Line 1: Line 1:
-
== Formát šablony ==
+
== Intro ==
 +
 
 +
Š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 ==
 +
 
 +
Každá šablona má svoji hlavičku. Příklad:
[[File:Header ftl.png]]
[[File:Header ftl.png]]
Line 8: Line 23:
# Lookup databáze
# Lookup databáze
# Autorizace
# Autorizace
-
# Popis šablony
+
# 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:
 +
 
 +
<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:

File:Header ftl.png

Význam jednotlivých řádků:

  1. Vstupní parametry, ze kterých se generují formulářové prvky
  2. Lookup databáze
  3. Autorizace
  4. 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;
}
Personal tools