x

Glavna poglavja

  1. LimeSurvey Cloud proti LimeSurvey CE
  2. LimeSurvey Cloud – Hitri vodnik
  3. LimeSurvey CE - Montaža
  4. Kako oblikovati dobro anketo (Vodnik)
  5. Začetek
  6. Konfiguracija LimeSurvey
  7. Uvod - Ankete
  8. Oglejte si nastavitve ankete
  9. Ogled menija ankete
  10. Oglejte si strukturo ankete
  11. Uvod - Vprašanja
  12. Uvod – skupine vprašanj
  13. Uvod – Ankete – Upravljanje
  14. Možnosti orodne vrstice ankete
  15. Večjezična anketa
  16. Vodnik za hitri začetek - ExpressionScript
  17. Napredne funkcije
  18. Splošna pogosta vprašanja
  19. Odpravljanje težav
  20. Rešitve
  21. Licenca
  22. Dnevnik sprememb različice
  23. Vtičniki – napredno
 Actions

Navodila za ExpressionScript

From LimeSurvey Manual

Revision as of 08:32, 19 December 2023 by Maren.fritz (talk | contribs) (Created page with "Spodaj lahko najdete posnetke zaslona reprezentativnih vprašanj. Kot lahko vidite, sintaksa EM označuje vsa polja, ki lahko vsebujejo prilagajanje. Tukaj vidite primere ustr...")


Pregled prej razloženega

Če ste do sedaj sledili strukturi priročnika LimeSurvey, to pomeni, da že poznate LimeSurvey terminologijo. Nato smo obravnavali izraze in spremenljivke, da bi se naučili izboljšati naše ankete. V naslednjem delu smo prešli na vrste in pomene označevanja sintakse, da bi izvedeli, kako popraviti sintaksne napake.

S temi osnovnimi pojmi bi se lahko pomaknili k primerom in razlagi, kako izrazi delujejo znotraj LimeSurvey.


Označevanje sintakse

Naslednji posnetki zaslona podajajo primere, vendar ne prikazujejo vrednosti namigov orodij. Namig za orodje je informativno polje, ki se prikaže vsakič, ko z miško premaknete nad katero koli krepko obarvano besedo.

Zaradi tega označevanja sintakse je zelo enostavno sestaviti pravilne izraze, tudi tiste, ki so zapleteni. Čeprav namerava ekipa LimeSurvey poskusiti zgraditi GUI Expression Builder, lahko uporabite obstoječe označevanje sintakse za hitro prepoznavanje in popravljanje tipkarskih napak. Uporabite lahko tudi namige za preverjanje natančnosti svojih izrazov (npr. potrdite, da ste izbrali želeno spremenljivko(e)).

V vsakem od primerov so trije stolpci:

  1. Vir - to je neobdelano besedilo, ki bi ga vnesli v polje z vprašanji LimeSurvey
  2. Lepo tiskanje - to je sintaktično označen ekvivalent tega, kar ste vnesli
    • Upoštevajte, da so izrazi prikazani z rjavim ozadjem, vendar niso obdani z zavitimi oklepaji pri tem označevanju.
    • Ker EM podpira rekurzivno zamenjavo, bi prikaz zavitih oklepajev v označevanju povzročil sintaksne napake
  3. Rezultat - to je izhod, ustvarjen, ko EM obdela vir
    • Vse, kar je mogoče pravilno nadomestiti, je
    • Izrazi z napakami so prikazani v vrstici, s označevanjem sintakse. Napake so obdane z rdeče obrobljenim poljem.


Pravilna sintaksa

Spodaj lahko najdete primere pravilne sintakse:

  1. Vrednosti: kaže, da so znane spremenljivke barvno označene glede na to, ali so nastavljene na trenutni strani. INSERTANS v starem slogu:xxxx dobi svoj lasten slog barvnega kodiranja
  2. Atributi vprašanja: kaže, da lahko zapis s pikami dostopa do nekaterih lastnosti vprašanj
  3. Matematika: kaže, da so podprti osnovni in kompleksni izračuni
  4. Obdelava besedila: prikazuje nekatere razpoložljive funkcije za obdelavo besedila
  5. Datumi: prikazuje dve razpoložljivi funkciji, povezani z datumom
  6. Pogojno: prikazuje uporabo funkcije if(). Izbire je mogoče ugnezditi.
  7. Prilagojeni odstavek: poročilo lahko popolnoma prilagodite na podlagi predhodnih vrednosti
  8. EM procesi znotraj nizov: kaže, da lahko izvaja zamenjave znotraj nizov. Ta primer generira prilagojeno ime slike.
  9. EM ne obdeluje zavitih oklepajev, kot so ti: kaže, da če so zaviti oklepaji ubežni ali je med izrazom in zavitimi oklepaji prazen prostor, ES ignorira izraz.


Datoteka:em-syntax-highlighting-1-v2.jpg


Skladnja EM vsebuje napake

Tukaj so primeri pogostih napak pri tipkanju izrazov ES. Upoštevajte, da opisi orodij zagotavljajo dodatne informacije.

  1. Inline Javascript, ki je pozabil dodati presledke za zavitim oklepajem
    • Ker se "document.write" pojavi takoj za zavitim oklepajem, EM misli, da je izraz, in rdeče- polji "dokument" in "zapiši", ker sta nedefinirani spremenljivki oziroma funkciji
  2. Neznane/napačno črkovane spremenljivke, funkcije in operatorji
    • Tukaj smo pozabili, da uporabljamo ime spremenljivke "spol" namesto " spol", vendar EM ujame to napako. Prav tako označi '++' z rdečim poljem, ker to ni podprt operator.
  3. Opozori, če uporabite = namesto eq ali izvedete dodelitev vrednosti
    • Upoštevajte, da sta '=' in '+=' so v rdečem besedilu namesto črnega. Če z miško premaknete nad njimi, boste videli opozorila, da dodeljujete vrednost.
  4. Napačno število argumentov za funkcije
    • if() sprejme 3 argumente, vendar so mu bili dodeljeni 4, zato lebdite nad rdečim poljem "if" bo razložilo napako in prikazalo podprto sintakso
    • sum() sprejme neomejeno število argumentov, vendar smo imeli pred zaključnim oklepajem končno vejico, tako da je rdeče polje
  5. Neujemajoči se oklepaji
    • To je ena najpogostejših napak pri pisanju izrazov.
    • To prikazuje dva primera manjkajočih oklepajev in en primer preveč zapirajočih oklepajev.
  6. Nepodprta sintaksa
    • Če uporabljate operator ali ločila, ki jih ES ne podpira, jih bo označil z rdečim poljem.
  7. Neveljavne dodelitve
    • Nekatere spremenljivke so readWrite in lahko spremenite njihove vrednosti. Druge so samo za branje.
    • Če poskušate spremeniti vrednost spremenljivke samo za branje, ne morete. EM bo poskus označil z rdečim poljem.
    • Če poskušate enačbi ali nizu dodeliti vrednost, boste prejeli tudi napako


Datoteka:em-syntax-highlighting-errors-v2.jpg


"Živi" primeri označevanja sintakse z aktivnimi opisi orodij

Vir Lep tisk Rezultat
Tukaj je primer sintakse OK z opisi orodij
Pozdravljeni {if(gender=='M','Mr.','Mrs.')} {priimek}, zdaj je {datum('g:i a',time())}. Ali veste, kje so vaši {sum(numPets,numKids)} otroci in ljubljenčki?
Tukaj je primer sintakse OK z opisi orodij
Pozdravljeni, if ( spol == 'M' , 'Mr.' , 'Mrs.' ) priimek , zdaj je datum ( 'g:i a' , čas ()) . Ali veste, kje so vaši vsota ( numPets , numKids ) otrok in hišnih ljubljenčkov?
Tukaj je primer sintakse OK z opisi orodij
Pozdravljeni, g. Smith , ura je zdaj 6:07. Ali veste, kje so vaši 3 otroci in ljubljenčki?
Tukaj so pogoste napake, da si lahko ogledate namige orodij
Spremenljivke, uporabljene preden so deklarirane: {notSetYet}
Neznana funkcija: {iff(numPets>numKids,1,2)}
Neznana spremenljivka: {sum(age,num_pets,numKids)}
Napačni # parametri: {sprintf()},{if(1,2)},{date()}
Dodeli spremenljivke samo za branje:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}
Neuravnoteženi oklepaji: {pow(3,4},{(pow(3,4)},{pow(3,4))}
Tukaj so pogoste napake, da si lahko ogledate namige orodij
Spremenljivke, uporabljene preden so deklarirane: notSetYet
Neznana funkcija: iff ( numPets > numKids ,1,2)
Neznana spremenljivka: vsota ( age , num_pets , numKids )
Napačni # parametri: sprintf () , if (1,2) , datum ()
Dodeli spremenljivke samo za branje: TOKEN:ATTRIBUTE_1 += 10 , ime = 'Sally'
Neuravnoteženi oklepaji: pow (3,4 , ( pow (3,4) , pow (3,4) )
Tukaj so pogoste napake, da si lahko ogledate namige orodij
Spremenljivke, uporabljene preden so deklarirane: notSetYet
Neznana funkcija: iff ( numPets > numKids ,1,2)
Neznana spremenljivka: vsota ( age , num_pets , numKids )
Napačni # parametri: sprintf () , if (1,2) , datum ()
Dodeli spremenljivke samo za branje: TOKEN:ATTRIBUTE_1 += 10 , ime = 'Sally'
Neuravnoteženi oklepaji: pow (3,4 , ( pow (3,4) , pow (3,4) )
Tukaj je nekaj nepodprte sintakse
Ni podpore za '++', '--', '%',';': {min(++age, --age,age % 2);}
Niti '|', '&', '^': {(vsota(2 | 3,3 & 4,5 ^ 6)}}
Niti nizov: {name[2], name['moje']}
Tukaj je nekaj nepodprte sintakse
Ni podpore za '++', '--', '%',';': min (++ starost ,-- starost , starost% 2);
Niti '|', '&', '^': ( vsota (2| 3,3& 4,5^ 6) }
Niti nizov: ime[ 2] , ime[ 'moje']
Tukaj je nekaj nepodprte sintakse
Ni podpore za '++', '--', '%',';': min (++ starost ,-- starost , starost% 2);
Niti '|', '&', '^': ( vsota (2| 3,3& 4,5^ 6) }
Niti nizov: ime[ 2] , ime[ 'moje']


Primeri prilagajanja (npr. razširitev {INSERTANS:xxx})

"Dragi {gospod}/{gospa} Smith ..."

S funkcijo if() pogojno izberite, ali želite prikazati 'Mr.' ali 'gospa'.

Sintaksa je if(test,do_if_true,do_if_false).

# Koda Vprašanje Tip
1 spol Kakšen je vaš spol? Spol
|example1 Spoštovani {if(gender=='M','Mr.','Mrs.')} Smith, ... Dolgo prosto besedilo



Kot je razvidno spodaj, sta "gospod" in "gospa" prilagojena temu, kar respondent izbere kot odgovor na vprašanje "spol".


Datoteka:em-tailoring-q-ex1-usage.jpg Datoteka:em-tailoring-q-ex2-usage.jpg


"Dragi {Mr}/{Mrs} Smith ..." v e-pošti z vabilom

Zgornji primer lahko uporabite v e-poštnem sporočilu z vabilom z uporabo atributov iz tabele žetonov. S funkcijo if() izberite, ali je 'Mr.' ali 'gospa' je treba uporabiti v e-pošti.


Sintaksa je "if(test,do_if_true,do_if_false)".

# atribut vrednost
1 Priimek Smith
2 E-poštni naslov test@test. com
3 ATTRIBUTE_2 M


Besedilo v e-pošti z vabilom:

Spoštovani {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},

povabljeni ste bili k sodelovanju v anketi:

https:/...



e-poštni ogled:



Primeri izračuna/ocenjevanja

Izračunajte vrednosti ocene med izvajanjem in shranite rezultate v podatke ankete

Ta primer uporablja vse funkcije EM, vključno z ustreznostjo, prilagajanjem in vrsto vprašanja Equation.

Prav tako kaže, da imajo vsi omogočen JavaScript, tako da če imate te funkcije na strani, se bo ta dinamično spreminjala, ko bodo ljudje nastavljali in spreminjali svoje odgovore.

# Koda Vprašanje Tip Ustreznost
1 numKids Koliko otrok imate? Številski vnos 1
2 kid1 Koliko je star vaš prvi otrok? Številski vnos numKids >= 1
3 kid2 Koliko je star vaš drugi otrok otrok? Številski vnos numKids >= 2
4 kid3 Koliko je star vaš tretji otrok? Numerical input numKids >= 3
5 kid4 Koliko je star vaš četrti otrok? Številski vnos numKids >= 4
6 sumKidAges {sum(kid1.NAOK,kid2. NAOK,otrok3.NAOK,otrok4.NAOK)} Enačba 1
7 otrokPovzetek Rekli ste, da imate {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','Vsota starosti vaših prvih ',min(numKids,4),' otrok je ',sumKidAges,'.'),' ')} |1


Za prenos tega primera kliknite naslednjo povezavo: Assessments_survey_example.


Spodaj lahko najdete posnetke zaslona reprezentativnih vprašanj. Kot lahko vidite, sintaksa EM označuje vsa polja, ki lahko vsebujejo prilagajanje. Tukaj vidite primere ustreznosti označevanja sintakse, vrsto vprašanja Enačba in zamenjave znotraj vprašanja. Uporabite lahko tudi zamenjave v Pomoči, Prikazu glave skupine, Pozdravnem sporočilu in Končnem sporočilu.

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: