x

Fő fejezetek

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. LimeSurvey Cloud – Rövid útmutató
  3. LimeSurvey CE - Telepítés
  4. Hogyan készítsünk jó felmérést (Útmutató)
  5. Elkezdeni
  6. LimeSurvey konfiguráció
  7. Bevezetés – Felmérések
  8. A felmérés beállításainak megtekintése
  9. A felmérés menü megtekintése
  10. A felmérés szerkezetének megtekintése
  11. Bevezetés – Kérdések
  12. Bevezetés – Kérdéscsoportok
  13. Bevezetés - Felmérések - Menedzsment
  14. A felmérés eszköztárának beállításai
  15. Többnyelvű felmérés
  16. Gyors útmutató – ExpressionScript
  17. Speciális funkciók
  18. Általános GYIK
  19. Hibaelhárítás
  20. Megoldások
  21. Engedély
  22. Verzióváltoztatási napló
  23. Bővítmények – Speciális
 Actions

ExpressionScript útmutatók

From LimeSurvey Manual

Revision as of 14:30, 10 October 2023 by Maren.fritz (talk | contribs) (Created page with "A szintaxis: "if(teszt,do_if_true,do_if_false)".")


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



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

# attribute value
1 Last name Smith
2 Email address test@test.com
3 ATTRIBUTE_2 M


Text in invitation email:

Dear {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},

you have been invited to participate in a survey:

https:/...



email View:



Calculation / Assessment Examples

Calculate assessment values at runtime and store the results in the survey data

This example uses all of EM's features, including Relevance, Tailoring, and the Equation question type.

It also shows that all of them are JavaScript-enabled, so if you have these features on a page, it will dynamically change as people set and change their answers.

# Code Question Type Relevance
1 numKids How many children do you have? Numerical input 1
2 kid1 How old is your first child? Numerical input numKids >= 1
3 kid2 How old is your second child? Numerical input numKids >= 2
4 kid3 How old is your third child? Numerical input numKids >= 3
5 kid4 How old is your fourth child? Numerical input numKids >= 4
6 sumKidAges {sum(kid1.NAOK,kid2.NAOK,kid3.NAOK,kid4.NAOK)} Equation 1
7 kidSummary You said that you have {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','The sum of ages of your first ',min(numKids,4),' kids is ',sumKidAges,'.'),' ')} Text display 1


To download this example, please click on the following link: Assessments_survey_example.


You may find below screenshots of representative questions. As you can see, EM syntax-highlights all fields that might contain tailoring. Here, you see examples of syntax-highlighting Relevance, the Equation question type, and substitutions within a question. You can also use substitutions within Help, Group header display, Welcome message, and End message.

In the next example, since the relevance is {numKids >= 2), the question will only be visible if the respondent reports that she has at least two children.



Below, you may observe that each variable has the .NAOK suffix attached to it. This is because of how EM supports cascading relevance. If you did not have .NAOK, then the sum would only be computed if the person said she has 4 children (e.g., if all of the variables are relevant). The usage of .NAOK means that we want to compute the sum even if all or some of the variables are irrelevant (e.g., "Not Applicable" (NA) is alright (OK)).

However, the .NAOK attribute only affects whether variables are passed into EM. If the respondent initially says she has 3 children, and enters ages for each, then changes her mind and says she has 2, we don't want to see the sum of the 3 entered values - since the third child is "not applicable" in our case anymore:



Each separate Expression is color coded with a tan background. As you can see, there are three separate Expressions here. The last one contains a message that is conditionally shown only if the person has more than one child.



Now, here are screenshots of the survey in action.

When you first visit the page, you see this. Note that is says "You have 0 children" instead of "You have 0 child".



If I change the value for number of children to 1, the display instantly changes to this, even though it is on the same page:



Now notice that the grammar is correct: "You have 1 child".

Now I change the value for number of children to 3, and the display instantly changes to this.

Notice that you now see the conditional message at the bottom:  "The sum of ages of your first 3 kids is 0.".



Now I'll enter ages for my imaginary children, and I get this display, summing up their ages:



Again, the score and display updates instantly as I enter the values, so you can use this to show a running total of an Assessment Score.


Now, I change the value for the number of children to 2. The display has changed to this:



Notice that although I had entered a value of 5.5 for the third child, the report now only sums the values of my first 2 children.

The reason for this is that the 3rd value is now irrelevant, and irrelevant values are actively ignored by EM.

If I were to change the number of kids back to 3, I would see the value of 5.5 I entered again. So, I don't lose any information I enter on the page.

However, if I navigate to the Next or Previous page, all irrelevant values will be NULLed out in the session and in the database. So, if I were to keep the value at 2, go to the next page, and then come back and state that I actually have 3 kids, I would no longer see the age of 5.5.


Enter data and see a dynamically changing report of what was entered on the same page

This example presents the Tailoring process within LimeSurvey.

To download this example, click on the following link: Dynamic changes survey example.

Here is what the page looks like initially. You only see the question asking what city you live in:



Once you start to enter an answer, the tailoring process is also starting:


As you enter answers, the table at the bottom of the page is updated to show the answer codes and values of your responses.


Common Debugging Examples

Nested if() Statements (Conditional Logic)

EM supports the function "if(test,do_if_true,do_if_false)" so that you can perform conditional logic or tailoring. This function can be nested to do the equivalent of "if { } else if { } else {  }". EM will let you know if the parentheses are not balanced (e.g., you are missing a closing right parenthesis), or if you have any extra right parentheses. You should try to count the parentheses as you compose long nested if statements, save it, check for syntax errors, and fix them if any are found. Let's check together the below example.

The group of questions used below can be accessed from here: Tailoring survey example.lsg


First, with nothing entered, you just see "Hello."



If you enter a name, it says, "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: