ExpressionScript útmutatók
From LimeSurvey Manual
Az előzőekben leírtak áttekintése
Ha eddig követte a LimeSurvey kézikönyv felépítését, az azt jelenti, hogy már használja az LimeSurvey terminológiát. Ezután a kifejezésekkel és változókkal foglalkoztunk, hogy megtanuljuk, hogyan javíthatjuk felméréseinket. A következő részben áttértünk az szintaktikai kiemelés típusaira és jelentésére, hogy megtanuljuk a szintaktikai hibák javítását.
Ha ezekkel az alapfogalmakkal foglalkozunk, továbbléphetünk a példák felé, és elmagyarázhatjuk, hogyan működnek a kifejezések a LimeSurvey-n belül.
Szintaxis kiemelés
A következő képernyőképek példákat adnak, de nem mutatják az eszköztippek értékeit. Az eszköztipp egy tájékoztató mező, amely akkor jelenik meg, amikor az egeret a félkövér színű szavak fölé viszi.
Ennek a szintaktikai kiemelésnek köszönhetően nagyon könnyű helyes kifejezéseket alkotni, még a bonyolultakat is. Bár a LimeSurvey csapata azt tervezi, hogy megpróbál egy Expression Builder grafikus felhasználói felületet létrehozni, a meglévő szintaxis-kiemelés segítségével gyorsan azonosíthatja és kijavíthatja az elírásokat. Az eszköztippek segítségével ellenőrizheti a kifejezések pontosságát (pl. megerősítheti, hogy kiválasztotta a kívánt változó(ka)t).
Mindegyik példában három oszlop található:
- Forrás - ez az a nyers szöveg, amelyet a LimeSurvey kérdésmezőjébe kell beírnia
- Pretty Print - ez a beírt szöveg szintaktikailag kiemelt megfelelője! N!#*Ne feledje, hogy a kifejezések barnás háttérrel jelennek meg, de nincsenek körülvéve göndör kapcsos zárójelek ebben a kiemelésben.
- Mivel az EM támogatja a rekurzív helyettesítést, a göndör kapcsos zárójelek kiemelésben való megjelenítése szintaktikai hibákat okozna
- Eredmény - ez a kimenet akkor keletkezik, amikor az EM feldolgozza a forrást
- Minden, ami megfelelően behelyettesíthető
- A hibás kifejezések soronként jelennek meg, szintaktikai kiemeléssel. A hibákat piros vonalú doboz veszi körül.
Megfelelő szintaxis
Az alábbiakban találhat példákat a helyes szintaxisra:
- Értékek: azt mutatja, hogy az ismert változók színkóddal vannak ellátva, aszerint, hogy be vannak-e állítva az aktuális oldalon. A régi stílusú INSERTANS:xxxx saját színkódolási stílust kap
- Kérdésattribútumok: megmutatja, hogy a pontjelölés hozzáférhet a kérdések bizonyos tulajdonságaihoz
- Matek: megmutatja, hogy az alapvető és összetett számítások támogatottak
- Szövegfeldolgozás: néhány elérhető szövegfeldolgozó függvényt mutat
- Dátumok: két elérhető dátumhoz kapcsolódó függvényt mutat
- Feltételes: az if() függvény használatát mutatja. A választási lehetőségek egymásba ágyazhatók.
- Testreszabott bekezdés: teljes mértékben testreszabhatja a jelentést korábbi értékek alapján
- EM folyamatok a karakterláncokon belül: azt mutatja, hogy képes helyettesíteni a karakterláncokon belül. Ez a példa egy személyre szabott képnevet állít elő.
- EM nem dolgozza fel az ehhez hasonló kapcsos zárójeleket: azt mutatja, hogy ha a kapcsos kapcsos zárójelek kihagyásra kerülnek, vagy ha a kifejezés és a kapcsos zárójelek között szóköz van, az ES figyelmen kívül hagyja a kifejezést.
EM-szintaxis hibákat tartalmaz
Íme néhány példa az ES kifejezések begépelésekor előforduló gyakori hibákra. Vegye figyelembe, hogy az eszköztippek további információkat nyújtanak.
- Inline Javascript, amely elfelejtett szóközt hozzáadni a kapcsos zárójel után
- Mivel a "document.write" közvetlenül a kapcsos kapcsos zárójel után jelenik meg, az EM úgy gondolja, hogy ez egy kifejezés, és a piros- a "dokumentum" és a "írás" mezőket, mivel ezek definiálatlan változók és függvények
- Ismeretlen/hibásan írt változók, függvények és operátorok
- Itt elfelejtettük, hogy a "gender" változónevet használjuk "" helyett szex", de az EM észleli ezt a hibát. A '++' jelet is piros dobozba helyezi, mivel ez nem támogatott operátor.
- Figyelmeztetés, ha az = értéket használja az eq helyett, vagy érték-hozzárendelést hajt végre
- Jegyezze meg, hogy a '=' és a '+=' piros szöveggel jelennek meg fekete helyett. Ha föléjük viszi az egeret, akkor figyelmeztetéseket fog látni, hogy értéket ad hozzá.
- Rossz argumentumszám a függvényekhez
- if() 3 argumentumot vesz fel, de 4-et kapott, tehát a lebegés a piros dobozos "if" felett megmagyarázza a hibát és megmutatja a támogatott szintaxist
- sum() korlátlan számú argumentumot vesz fel, de a záró zárójelek előtt volt egy vessző, tehát ez piros doboz! N!#Nem illő zárójelek
- Ez az egyik leggyakoribb hiba a kifejezések írásakor.
- Ez két példát mutat be a hiányzó záró zárójelekre, és egy példát arra, hogy egy túl sok záró zárójel van.
#Nem támogatott szintaxis
- Ha olyan operátort vagy írásjelet használ, amelyet az ES nem támogat, akkor a rendszer piros négyzetbe helyezi.
- Érvénytelen hozzárendelések
- Egyes változók readWrite, és értékeik módosíthatók. Mások csak olvashatók.
- Ha megpróbálja megváltoztatni egy csak olvasható változó értékét, nem tudja. Az EM bejelöli a kísérletet.
- Ha megpróbál értéket rendelni egy egyenlethez vagy karakterlánchoz, szintén hibaüzenetet kap
"Élő" példák a szintaxis kiemelésre aktív eszköztippekkel
Forrás | Pretty Print | Eredmény |
---|---|---|
Íme egy példa az OK szintaxisra eszköztippekkel Szia {if(gender=='M','Mr.','Mrs.')} {vezetéknév}, most {date('g:i a',time())} van. Tudja, hol vannak a {sum(numPets,numKids)} gyermekei és házi kedvencei? | Íme egy példa az OK szintaxisra eszköztippekkel Hello if ( gender == 'M' , 'Mr.' , 'Mrs.' ) vezetéknév , ez most dátum ( 'g:i a' , idő ()) . Tudja, hol vannak az Ön összege ( numPets , numKids ) gyermekei és házi kedvencei? | Íme egy példa az OK szintaxisra eszköztippekkel Helló Mr. Smith ! Most 6:07 van. Tudod hol van a 3 gyereked és a házi kedvenced? |
Íme a gyakori hibák, így láthatja az eszköztippeket A deklarálásuk előtt használt változók: {notSetYet} Ismeretlen függvény: {iff(numPets>numKids,1,2)} Ismeretlen változó: {sum(age,num_pets,numKids)} Helytelen # paraméter: {sprintf()},{if(1,2)},{date()} Csak olvasható változók hozzárendelése:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'} Kiegyensúlyozatlan zárójelek: {pow(3,4},{(pow(3,4)},{pow(3,4))} | Íme a gyakori hibák, így láthatja az eszköztippeket A deklaráció előtt használt változók: notSetYet Ismeretlen függvény: iff ( numPets > numKids ,1,2) Ismeretlen változó: sum ( életkor , háziállatok száma , gyerekek száma ) Rossz # paraméterek: sprintf () , if (1,2) , dátum () Csak olvasható változók hozzárendelése: TOKEN:ATTRIBUTE_1 += 10 , name = 'Sally' Kiegyensúlyozatlan zárójelek: pow (3,4 , ( pow (3,4) , pow (3,4) )) | Íme a gyakori hibák, így láthatja az eszköztippeket A deklaráció előtt használt változók: notSetYet Ismeretlen függvény: iff ( numPets > numKids ,1,2) Ismeretlen változó: sum ( életkor , háziállatok száma , gyerekek száma ) Rossz # paraméterek: sprintf () , if (1,2) , dátum () Csak olvasható változók hozzárendelése: TOKEN:ATTRIBUTE_1 += 10 , name = 'Sally' Kiegyensúlyozatlan zárójelek: pow (3,4 , ( pow (3,4) , pow (3,4) )) |
Íme néhány nem támogatott szintaxis Nem támogatott a '++', '--', '%',';': {min(++age, --age,age % 2);} Sem '|', '&', '^': {(sum(2 | 3,3 & 4,5 ^ 6)}} Sem tömbök: {név[2], név['enyém']} | Íme néhány nem támogatott szintaxis Nem támogatott a '++', '--', '%',';': min ( ++ age , -- age , age % 2) ; Sem '|', '&', '^': ( összeg (2 | 3,3 és 4,5 ^ 6) } Sem tömbök: név [ 2 ] , név [ 'enyém' ] | Íme néhány nem támogatott szintaxis Nem támogatott a '++', '--', '%',';': min ( ++ age , -- age , age % 2) ; Sem '|', '&', '^': ( összeg (2 | 3,3 és 4,5 ^ 6) } Sem tömbök: név [ 2 ] , név [ 'enyém' ] |
Résztési példák (pl. {INSERTANS:xxx} kiterjesztése)
"Kedves Smith {Mr}/{Mrs}..."
Az if() függvénnyel feltételesen kiválaszthatja, hogy megjelenjen-e az 'Mr.' vagy 'Mrs.'.
A szintaxis if(test,do_if_true,do_if_false).
# | Kód | Kérdés | - | 1 | nem | Mi a neme? | Nem |
|example1 | Kedves {if(gender=='M','Mr.','Mrs.')} Smith, ... | Hosszú szabad szöveg |
Amint az alábbiakban megfigyelhető, az „úr” és az „asszony” a „nem” kérdésre adott válaszként választandó.
"Kedves {Mr}/{Mrs} Smith..." a meghívó e-mailben
A fenti példát használhatja a meghívó e-mailben a tokentáblázat attribútumainak használatával. Az if() függvénnyel kiválaszthatja, hogy 'Mr.' vagy 'Mrs.' kell használni az e-mailben.
A szintaxis: "if(teszt,do_if_true,do_if_false)".
# | attribútum | érték |
1 | Vezetéknév | Smith |
2 | E-mail cím | teszt@teszt. com |
3 | ATTRIBUTE_2 | M |
Szöveg a meghívó e-mailben:
Kedves {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME}!
meghívást kapott egy felmérésben való részvételre:
https:/...
email Megtekintés:
Számítási / Értékelési példák
Számítsa ki az értékelési értékeket futás közben, és tárolja az eredményeket a felmérési adatokban
Ez a példa az EM összes funkcióját használja, beleértve a Relevancia, a Testreszabás és az Egyenlet kérdéstípust.
Azt is mutatja, hogy mindegyik JavaScript-kompatibilis, tehát ha ezek a funkciók vannak egy oldalon, akkor dinamikusan változni fog, ahogy az emberek beállítják és módosítják a válaszaikat.
# | Kód | Kérdés | Típus | Relevancia | |||||
1 | NumKids | Hány gyermeke van? | Numerikus bevitel | - | 2 | kid1 | Hány éves az első gyermeke? | Számbevitel | számKids >= 1 |
3 | kid2 | 5 | kid4 | Hány éves a negyedik gyermeke? | Számbevitel | numKids >= 4 | |||
6 | sumKidAges | {sum(kid1.NAOK,kid2. NAOK,kid3.NAOK,kid4.NAOK)} | Egyenlet | 1 | |||||
7 | kidSummary | Azt mondtad, hogy {numKids} van. {if(numKids==1,'child','childs')}. {if(numKids>1,implode(' ','Az első ',min(numKids,4),' gyerekek életkorainak összege ',sumKidAges,'.'),' ')} | |1 |
A példa letöltéséhez kattintson a következő linkre: Assessments_survey_example.
Az alábbiakban képernyőképeket találhat a reprezentatív kérdésekről. Amint láthatja, az EM szintaxis kiemeli az összes olyan mezőt, amely testreszabást tartalmazhat. Itt példákat láthat a Relevancia szintaxis-kiemelésére, az Egyenlet kérdéstípusára és a kérdésen belüli helyettesítésekre. A súgóban, a csoportfejléc-megjelenítésben, az üdvözlő üzenetben és a befejező üzenetben is használhatja a helyettesítéseket.
A következő példában, mivel a relevancia {numKids >= 2), a kérdés csak akkor lesz látható, ha a válaszadó beszámol arról, hogy legalább két gyermeke van.
Az alábbiakban megfigyelheti, hogy minden változóhoz tartozik a .NAOK utótag. Ez annak köszönhető, hogy az EM hogyan támogatja a lépcsőzetes relevanciát. Ha nem rendelkezik .NAOK-val, akkor az összeget csak akkor számítja ki, ha a személy azt mondja, hogy 4 gyermeke van (pl. ha az összes változó releváns). A .NAOK használata azt jelenti, hogy akkor is ki akarjuk számítani az összeget, ha az összes vagy néhány változó irreleváns (pl. a "Nem alkalmazható" (NA) rendben van (OK)).
A .NAOK attribútum azonban csak azt befolyásolja, hogy a változók átkerülnek-e az EM-be. Ha a válaszadó először azt mondja, hogy 3 gyermeke van, és mindegyikhez megadja az életkorát, majd meggondolja magát, és azt mondja, hogy 2, akkor nem akarjuk látni a 3 beírt érték összegét - mivel a harmadik gyermek "nem alkalmazható" esetünkben már:
Minden különálló kifejezés sárgásbarna háttérrel színkódolt. Amint látja, három külön kifejezés van itt. Az utolsó olyan üzenetet tartalmaz, amely csak akkor jelenik meg feltételesen, ha a személynek egynél több gyermeke van.
Íme, képernyőképek a felmérés működéséről.
Amikor először meglátogatja az oldalt, ezt látja. Ne feledje, hogy a "Neked 0 gyermeked"" helyett azt írja ki, hogy "0 gyermeked van.
Ha a gyerekek száma értékét 1-re módosítom, a kijelző azonnal erre változik, még akkor is, ha ugyanazon az oldalon van:
Most figyeld meg, hogy a nyelvtan helyes: "Van 1 'gyermeked.
Most a gyerekek számának értékét 3-ra módosítom, és a kijelző azonnal erre változik.
Figyelje meg, hogy most a feltételes üzenetet látja alul: "Az első 3 gyerek életkorának összege 0."
Most beírom a képzeletbeli gyermekeim életkorát, és ezt a kijelzőt kapom, amely összegzi az életkorukat:
Ismét a pontszám és a kijelző azonnal frissül, amint beírom az értékeket, így ezt felhasználhatja egy értékelési pontszám futó összegének megjelenítésére.
Most a gyermekek számának értékét 2-re változtattam. A kijelző a következőre változott:
Figyeljük meg, hogy bár a harmadik gyermeknél 5,5 értéket adtam meg, a jelentés most csak az első 2 gyermekem értékeit összegzi.
Ennek az az oka, hogy a 3. érték már irreleváns, és az irreleváns értékeket az EM aktívan figyelmen kívül hagyja.
Ha visszaállítanám a gyerekek számát 3-ra, akkor újra az 5,5-ös értéket látnám, amit beírtam. Tehát nem veszítek el semmilyen információt, amit az oldalon megadok.
Ha azonban a Következő vagy az Előző oldalra navigálok, minden irreleváns érték NULLÁLLÁSRA kerül a munkamenetben és az adatbázisban. Tehát, ha az értéket 2-ben tartanám, mennék a következő oldalra, majd visszajövök és kijelenteném, hogy valójában 3 gyerekem van, akkor már nem látnám az 5,5 éves kort.
Adja meg az adatokat, és tekintse meg a dinamikusan változó jelentést arról, hogy mit adtak meg ugyanazon az oldalon
Ez a példa a LimeSurvey testreszabási folyamatát mutatja be.
A példa letöltéséhez kattintson a következő hivatkozásra: Dinamikus változások felmérési példa.
Így néz ki az oldal kezdetben. Csak azt a kérdést látja, hogy melyik városban él:
Amint elkezdi beírni a választ, a testreszabási folyamat is elindul:
A válaszok beírásakor az oldal alján lévő táblázat frissül, és megjeleníti a válaszok válaszkódjait és értékeit.
Gyakori hibakeresési példák
Beágyazott if() utasítások (feltételes logika)
Az EM támogatja az "if(test,do_if_true,do_if_false)" függvényt, így feltételes logikát vagy testreszabást hajthat végre. Ez a függvény beágyazható az "if { } else if { } else { }" megfelelőjének végrehajtására. Az EM értesíti Önt, ha a zárójelek nincsenek kiegyensúlyozva (pl. hiányzik egy záró jobb oldali zárójel), vagy ha van extra jobboldali zárójel. Meg kell próbálnia megszámolni a zárójeleket a hosszú beágyazott if utasítások összeállítása során, mentse el, ellenőrizze a szintaktikai hibákat, és javítsa ki azokat, ha talál ilyet. Nézzük meg együtt az alábbi példát.
Az alább használt kérdéscsoport innen érhető el: Személyre szabott felmérés example.lsg
Először is, ha nincs beírva, csak azt látja, hogy „Hello”.
Ha beír egy nevet, a következőt írja ki: „Hello, {name}”.
Ha megad egy életkort, személyre szabott üzenetet kap, attól függően, hogy óvodás korú gyermek-e vagy sem:
Iskoláskorú, tinédzser vagy felnőtt. Íme egy tinédzser, aki névtelen akar lenni:
Itt van a csoport logikai fájlja. Amint az „ha alapú” kérdésnél látható, vannak beágyazott if-állítások, amelyek az adott személy életkorán alapulnak.
Amikor eredetileg szerkeszti ezt a kérdést, valószínű, hogy valamikor rossz számú zárójel lesz. Íme, mi történik, ha túl kevés van belőle:
Ha a „ha” szó fölé viszi az egérmutatót, amelyet egy piros négyzet vesz körül, a „Zárójelek nincsenek kiegyensúlyozva” felirattal. Ebben az esetben a „már felnőtt!” után négy záró zárójel legyen, de csak három.
If, on the other hand, you have an extra right parenthesis, it will be surrounded by a red box, like this:
When you are actually editing the question, the question looks like this: