Report Manager - Template

From PlcWiki

Jump to: navigation, search

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