Formregister.xml
Přiřazuje Middle k Formě a specifikuje možné filtry pro Formu. Lze zde také definovat tzv. ShortCut pro variantní Lookupy v datamodelu.
Filtry LuaForm
- Ve formregister:
QuickPopis:Popis=@filter_FilterPopis|Param1=z,Param2=y
- Parametry prijdou vzdy jako hash stringu.
- V pripade pouziti parametru se meni chovani. Jiz nemuze chodit Params="xxx".
- Pri prepnuti je to stejne {Init="1", Text="", Param1="z", Param2="y"}
- Pri … {Button="1", Text="abc", Param1="z", Param2="y"}
- Pri Enteru nebo clicku na zalozku {Enter="1", Text="def", Param1="z", Param2="y"}
- Pro funkcni Locate pomoci parametru:
AcceptLocate=1
(potom mu prijdou parametry LocateFields a LocateValues)
Speciální filtr v tabulce
Do sekce <Filters> se doplní následující řádek s textem popisu filtru a LUA kódem vracejícím string pro where klasuli SQL dotazu. Oddělovač polí je znak =. Je nutno pouzivat prefixy tabulek.
Příklad:
<!DOCTYPE FormRegister SYSTEM "../system/formregister.dtd"> <FormRegister> <Form Name="rozpocty_rozpocty"> <Filters> IDRozp IDDruh IDZakazka IDPartner IDCen IDUzivatele Počítače nad 100tis.=@return [[rozpocty_rozpocty.iddruh="poc" and rozpocty_rozpocty.CenaCelkem>100000]] </Filters> </Form> </FormRegister>
Nebo po novu pomocí xml můžeme nadefinovat i caption a default hodnoty po vložení řádku. Aby nevypadl z rozsahu.
Počítače nad 100tis.=@return filter.create([[rozpocty_rozpocty.iddruh="poc" and rozpocty_rozpocty.CenaCelkem>100000]], "Počítače > 100000", {IDDruh="poc"})
Nebo je navíc možno definovat vlastni záložky a používat je jako vstup do naší funkce. Demo: v akcích vytvoříme fiktivní filtr, který filtruje najednou IDDruh a IDStav s nastavením záložek na 'xxx' a 'yyy'. Při přepnutí na tento filtr je parametr Folder=nil a žádná záložka není vybrána, v tomto případě nevyhoví žádný řádek. Až uživatel cvakne na záložku, tak do Folder dostaneme string 'xxx' nebo 'yyy' a vytvoříme filtr.
Dvojitý filtr=@return v_partneri_akce.DvojityFilter(DSI, Form, Folder)
A v souboru v_partneri_akce.lua si nadefinujeme funkci:
function v_partneri_akce.DvojityFilter(DSI, Form, Folder) local s = cf.tostring(Folder) local ws = '0=1' if Folder then ws=string.format("partneri_akce.IDDruh='%s' and partneri_akce.IDStav='%s'", s, s) end return filter.create(ws, string.format("%s pokus", s), {IDDruh=s, IDStav=s}, {'xxx', 'yyy'}, s) end