Dinaminės formos

Norint, kad forma būtų dinamiška, galima naudoti elementų savybes - valueWhen, requiredWhen, disabledWhen ir visibleWhen.

Aprašant savybę būtina naudoti raktažodį "exec":

<visibleWhen>exec:field[.id == 'vedes'].value == true</visibleWhen>

Sintaksė

Sąlygų aprašymui gali būti naudojami operatoriai:

Operacija Simbolis
Neigimas !
Sudėtis, sujungimas +
Atimtis -
Daugyba *
Dalyba /
Dalyba ir "grindys" (12 // 7 = 1) //
Liekana (12 % 5 = 2) %
Pakelti laipsniu (3 ^ 2 = 9) ^
Loginis IR &&
Loginis ARBA ||

Palyginimui naudojami operatoriai:

Palyginimas Simbolis
Lygu ==
Ne lygu !=
Daugiau negu >
Daugiau arba lygu >=
mažiau negu <
Mažiau arba lygu <=
Elementas masyve arba eilutėje* in

*operatoriaus in gali būti naudojamas patikrinti, ar eilutė (string) talpina fragmentą: "GAM" in "Rivile MGAMA". Taip pat galima patikrinti, ar masyvas talpina elementą: "du" in ["vienas", "du", "trys"]. Šis operatorius negali būti naudojamas tikrinant masyvus sudarytus iš objektų. Sąlygos {a: 'b'} in [{a: 'b'}] atsakymas bus neigiamas.

Trišalis operatorius

Sąlyginė išraiška, kuri įvertina, ar pirmasis segmentas yra teisinga reikšmė. Jeigu teisinga, įvykdomas antrasis segmentas. Jeigu neteisinga - vykdomas trečiasis segmentas.

segmentas1 ? segmentas2 : segmentas3

Išraiška Rezultatas
"GAM" in "Rivile MGAMA" ? "yra": "nėra" yra
{id: 'vardas', name: 'Vartotojo vardas'}.id == 'pavarde' ? 'tiesa' : 'netiesa' netiesa

Duomenų filtravimas

field: [
    {id: 'aprasymas', type: 'textarea', caption: 'Savybės aprašymas', value: '', visible: true, nr: 1},
    {id: 'miestas', type: 'text', caption: 'Miestas', value: 'Vilnius', visible: true, nr: 2},
    {id: 'padalinys', type: 'text', caption: 'Padalinys', value: 'Administracija', visible: true, nr: 3},
    {id: 'dalintis', type: 'checkbox', caption: 'Sutinku dalintis', value: true, visible: true, nr: 4},
    {id: 'amzius', type: 'number', caption: 'Amžius', value: 35, visible: true, nr: 5}
]
Išraiška Rezultatas
field[.id == 'miestas'] [{id: 'miestas', type: 'text', caption: 'Miestas', value: 'Vilnius', visible: true}]
field[.caption == 'Pada' + 'linys'].value Administracija
field[.nr >= 3 && .nr< 5] [{id: 'padalinys', type: 'text', caption: 'Padalinys', value: 'Administracija', visible: true, nr: 3},
{id: 'dalintis', type: 'checkbox', caption: 'Sutinku dalintis', value: true, visible: true, nr: 4}]
field[.nr >= 2 && .nr< 5] [.nr < 3] [{id: 'miestas', type: 'text', caption: 'Miestas', value: 'Vilnius', visible: true, nr: 2}]
field[.value == 35].caption Amžius

Duomenų transformavimas

Transformavimo funkcija Ką daro Panaudojimas Rezultatas
split(simbolis) Išskaido eilutę pagal duotą simbolį "Rivile GAMA"|split(" ")[0] Rivile
slice(pradžiosIndeksas, pabaigosIndeksas) Iškerpa eilutę nuo pradžios indekso iki pabaigos indekso (pirmas indeksas - 0) "Rivile GAMA"|slice(7,10) GAMA
lower() Paverčia viską mažosiomis raidėmis "Rivile GAMA"|lower rivile gama

Sąlygos užrašymas, kai naudojamos kito elemento savybės

Jeigu formuojant sąlygą norima remtis kito elemento savybėmis (value, visible, required ir kt.), jas galima pasiekti kreipiantis į field masyvą ir nurodant konkretaus lauko id.

Pavyzdžiai

Elementas "aprasymas" bus nekoreguojamas, jei elementas "dalintis" nebus pažymėtas (t.y. reikšmė nelygi true).

<schema>   
    <type>textarea</type>                
    <id>aprasymas</id>                
    <caption>Savybės aprašymas</caption>                
    <width>1</width>                
    <rows>4</rows> 
    <disabledWhen>exec:field[.id == 'dalintis'].value != true</disabledWhen>
</schema> 

Elemento "miestas" reikšmė bus lygi elemento "padalinys" reikšmės pastabai, jeigu elemento "padalinys" reikšmės id = 2.

<schema>                
    <type>text</type>                
    <id>miestas</id>                
    <caption>Miestas</caption>                             
    <width>2</width> 
    <disabled>true</disabled>
    <valueWhen>exec:field[.id == 'padalinys'].value.id == 2? field[.id == 'padalinys'].value.pastaba: ''</valueWhen>
</schema>  

Elementas "padalinys" bus matomas formoje, jei elemento "padaliniai" reikšmė bus didesnė arba lygi 2.

<schema>                
    <type>text</type> 
    <id>padalinys</id>
    <caption>Padalinio pavadinimas</caption>                            
    <width>2</width>  
    <visibleWhen>exec:field[.id == 'padaliniai'].value >= 2</visibleWhen>   
</schema>    

Elementas "amzius" bus privalomas, jeigu bus rodomas elementas "info".

<schema>                
    <type>number</type>                
    <id>amzius</id>                
    <caption>Amžius</caption>                                           
    <width>2</width>                  
    <requiredWhen>exec:field[.id == 'info'].visible == true</requiredWhen> 
</schema>  

Sąlygos užrašymas, kai naudojami formos pildymui reikalingi sąrašai

Jeigu formuojant sąlygą norima remtis duomenimis, kurie talpinami formos šakoje "data", juos galima pasiekti nurodžius sąrašo pavadinimą ir reikšmės id: data.komentarai[.id == 1] arba data['komentarai'][.id == 1]

<app>
    ...
    <data>      
        <komentarai>        
            <list>          
                <id>0</id>          
                <name>Komentaras 1</name>        
            </list>        
            <list>          
                <id>1</id>          
                <name>Komentaras 2</name>
            </list>      
        </komentarai>    
    </data>  
</app>

Elemento "komentaras" reikšmė priklausys nuo elemento "aprasymas" reikšmės ilgio. Jei reikšmė ilgesnė nei 20 simbolių, bus rodomas komentras, kurio id lygus 1, priešingu atveju, bus rodomas komentaras, kurio reikšmė 0.

<schema>                
    <type>text</type>                
    <id>komentaras</id>                               
    <width>1</width>  
    <caption></caption>              
    <valueWhen>exec:field[.id == 'aprasymas'].value != undefined &amp;&amp; field[.id == 'aprasymas'].value.length > 20 ? data.komentarai[.id == 1].name: data.komentarai[.id == 0].name</valueWhen> 
    <disabled>true</disabled>       
</schema>