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 |
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>
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 && field[.id == 'aprasymas'].value.length > 20 ? data.komentarai[.id == 1].name: data.komentarai[.id == 0].name</valueWhen>
<disabled>true</disabled>
</schema>