Actions

ExpressionScript útmutatók

From LimeSurvey Manual

This page is a translated version of the page ExpressionScript How-tos and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎Nederlands • ‎Tiếng Việt • ‎dansk • ‎español • ‎français • ‎italiano • ‎magyar • ‎polski • ‎română • ‎slovenščina • ‎български • ‎日本語


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ó:

  1. Forrás - ez az a nyers szöveg, amelyet a LimeSurvey kérdésmezőjébe kell beírnia
  2. 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
  3. 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:

  1. É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
  2. Kérdésattribútumok: megmutatja, hogy a pontjelölés hozzáférhet a kérdések bizonyos tulajdonságaihoz
  3. Matek: megmutatja, hogy az alapvető és összetett számítások támogatottak
  4. Szövegfeldolgozás: néhány elérhető szövegfeldolgozó függvényt mutat
  5. Dátumok: két elérhető dátumhoz kapcsolódó függvényt mutat
  6. Feltételes: az if() függvény használatát mutatja. A választási lehetőségek egymásba ágyazhatók.
  7. Testreszabott bekezdés: teljes mértékben testreszabhatja a jelentést korábbi értékek alapján
  8. 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ő.
  9. 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-syntax-highlighting-1-v2.jpg


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.

  1. 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
  2. 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.
  3. 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á.
  4. 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.
  1. É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


Em-syntax-highlighting-errors-v2.jpg


"É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


Em-tailoring-q-ex1.jpg


Amint az alábbiakban megfigyelhető, az „úr” és az „asszony” a „nem” kérdésre adott válaszként választandó.


Em-tailoring-q-ex1-usage.jpg Em-tailoring-q-ex2-usage.jpg


"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:/...


EmEx1mail.jpg


email Megtekintés:


EmEx1mailview.jpg


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.


Em-tailoring2-q-kid2.jpg


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:


Em-tailoring2-q-sumKidAges.jpg


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.


Em-tailoring2-q-kidSummary.jpg


Í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.


Em-tailoring2-s-0kids.jpg


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:


Em-tailoring2-s-1kid.jpg


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."


Em-tailoring2-s-3kids.jpg


Most beírom a képzeletbeli gyermekeim életkorát, és ezt a kijelzőt kapom, amely összegzi az életkorukat:


Em-tailoring2-s-3kids-sum.jpg


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:


Em-tailoring2-s-2kids-sum.jpg


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:


Em-on page report-usage-1.jpg


Amint elkezdi beírni a választ, a testreszabási folyamat is elindul:

Em-on page report-usage-2.jpg


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.


Em-on page report-usage-3.jpg

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”.


Em-nested-if-blank.jpg


Ha beír egy nevet, a következőt írja ki: „Hello, {name}”.


Em-nested-if-name.jpg


Ha megad egy életkort, személyre szabott üzenetet kap, attól függően, hogy óvodás korú gyermek-e vagy sem:


Em-nested-if-toddler.jpg


Iskoláskorú, tinédzser vagy felnőtt. Íme egy tinédzser, aki névtelen akar lenni:


Em-nested-if-teenager.jpg


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.


Em-nested-if-logic-file.jpg


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:


Em-nested-if-missing-closing-paren.jpg


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.

Ha viszont van egy extra jobb oldali zárójel, akkor azt egy piros négyzet veszi körül, például:


Em-nestedd-if-extra-right-paren.jpg


Amikor ténylegesen szerkeszti a kérdést, a kérdés így néz ki:


Em-nested-if-edit-screen.jpg