ExpressionScript How-tos/hu: Difference between revisions
From LimeSurvey Manual
Maren.fritz (talk | contribs) Created page with "Először is, ha nincs beírva, csak azt látja, hogy „Hello”." |
Maren.fritz (talk | contribs) Created page with "Ha beír egy nevet, a következőt írja ki: „Hello, {name}”." |
||
Line 303: | Line 303: | ||
Ha beír egy nevet, a következőt írja ki: „Hello, {name}”. | |||
Revision as of 14:33, 10 October 2023
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}”.

If you enter an age, you get a tailored message, depending upon whether you are a pre-school-age child or not:

School aged, teenager, or adult. Here is a teenager who wants to be anonymous:

Here is the logic file of the group. As you can see in the "if-based" question, there are nested if statements based upon the person's age.

When you are originally editing this question, it is likely that at some point, you will have the wrong number of parentheses. Here's what happens if you have too few:

If you hover over the word "if", which is surrounded by a red box, it says "Parentheses not balanced". In this case, there should be four closing parentheses after "already an adult!", but there are only three.
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:
