Actions

Navodila za ExpressionScript

From LimeSurvey Manual

This page is a translated version of the page ExpressionScript How-tos and the translation is 100% complete.


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.

Ker je relevantnost v naslednjem primeru {numKids >= 2), bo vprašanje vidno le, če anketiranka navede, da ima vsaj dva otroka.



Spodaj lahko opazite, da ima vsaka spremenljivka pripono .NAOK. To je zato, ker EM podpira kaskadno ustreznost. Če ne bi imeli .NAOK, bi bila vsota izračunana samo, če bi oseba rekla, da ima 4 otroke (npr. če so vse spremenljivke ustrezne). Uporaba .NAOK pomeni, da želimo izračunati vsoto, tudi če so vse ali nekatere spremenljivke nepomembne (npr. "Ni uporabno" (NA) je v redu (OK)).

Vendar pa atribut .NAOK vpliva le na to, ali so spremenljivke posredovane v EM. Če anketiranec najprej reče, da ima 3 otroke, in za vsakega vnese starost, nato pa si premisli in reče, da ima 2, ne želimo videti vsote 3 vnesenih vrednosti – ker tretji otrok "ni ustrezen" v našem primeru več:


Datoteka:em-tailoring2-q-sumKidAges.jpg


Vsak ločen izraz je barvno kodiran z rjavim ozadjem. Kot lahko vidite, so tukaj trije ločeni izrazi. Zadnja vsebuje sporočilo, ki se pogojno prikaže le, če ima oseba več kot enega otroka.


Datoteka:em-tailoring2-q-kidSummary.jpg


Tukaj so posnetki zaslona ankete v akciji.

Ko prvič obiščete stran, vidite to. Upoštevajte, da piše "Imate 0 otrok" namesto "Imate 0 otrok".


Datoteka:em-tailoring2-s-0kids.jpg


Če spremenim vrednost za število otrok na 1, se zaslon takoj spremeni v to, čeprav je na isti strani:


Datoteka:em-tailoring2-s-1kid.jpg


Zdaj opazite, da je slovnica pravilna: "Imate 1 otroka'".

Zdaj spremenim vrednost za število otrok na 3 in zaslon se takoj spremeni v to.

Opazite, da zdaj na dnu vidite pogojno sporočilo: "Vsota starosti vaših prvih 3 otrok je 0.".


Datoteka:em-tailoring2-s-3kids.jpg


Zdaj bom vnesel starost svojih namišljenih otrok in dobil bom ta prikaz, ki povzema njihovo starost:


Datoteka:em-tailoring2-s-3kids-sum.jpg


Spet se rezultat in prikaz posodobita takoj, ko vnesem vrednosti, tako da lahko to uporabite za prikaz tekoče vsote ocene ocenjevanja.


Sedaj spremenim vrednost za število otrok na 2. Prikaz se je spremenil v tole:


Datoteka:em-tailoring2-s-2kids-sum.jpg


Upoštevajte, da čeprav sem za tretjega otroka vnesel vrednost 5,5, poročilo sedaj sešteva samo vrednosti mojih prvih 2 otrok.

Razlog za to je, da je tretja vrednost zdaj nepomembna, nepomembne vrednosti pa EM aktivno ignorira.

Če bi spremenil število otrok nazaj na 3, bi znova videl vrednost 5,5, ki sem jo vnesel. Tako ne izgubim nobenih informacij, ki jih vnesem na stran.

Vendar, če se pomaknem na naslednjo ali prejšnjo stran, bodo vse nepomembne vrednosti v seji in v zbirki podatkov izničene. Torej, če bi obdržal vrednost 2, šel na naslednjo stran in se nato vrnil in izjavil, da imam dejansko 3 otroke, ne bi več videl starosti 5,5.


Vnesite podatke in si oglejte dinamično spreminjajoče se poročilo o tem, kaj je bilo vneseno na isti strani

Ta primer predstavlja postopek prilagajanja znotraj LimeSurvey.

Če želite prenesti ta primer, kliknite naslednjo povezavo: Primer ankete o dinamičnih spremembah.

Tukaj je videti stran na začetku. Vidite samo vprašanje, v katerem mestu živite:


Datoteka:em-on_page_report-usage-1.jpg


Ko začnete vnašati odgovor, se začne tudi postopek prilagajanja:

Datoteka:em-on_page_report-usage-2.jpg


Ko vnesete odgovore, se tabela na dnu strani posodobi, da prikaže kode odgovorov in vrednosti vaših odgovorov.


Datoteka:em-on_page_report-usage-3.jpg

Pogosti primeri odpravljanja napak

Ugnezdeni stavki if() (pogojna logika)

EM podpira funkcijo "if(test,do_if_true,do_if_false)", tako da lahko izvajate pogojno logiko ali prilagajanje. To funkcijo je mogoče ugnezditi, da naredi enakovredno "if { } else if { } else { }". EM vas bo obvestil, če oklepaji niso uravnoteženi (npr. manjka desni zaključni oklepaj) ali če imate dodatne desne oklepaje. Poskusite prešteti oklepaje, ko sestavljate dolge ugnezdene stavke if, jih shranite, preverite skladenjske napake in jih popravite, če jih najdete. Skupaj preverimo spodnji primer.

Do skupine vprašanj, uporabljenih spodaj, lahko dostopate tukaj: Tailoring survey example.lsg


Prvič, ko ni vnesenega ničesar, vidite le »Pozdravljeni«.


Datoteka:em-nested-if-blank.jpg


Če vnesete ime, piše "Pozdravljeni {name}."


Datoteka:em-nested-if-name.jpg


Če vnesete starost, prejmete prilagojeno sporočilo glede na to, ali ste predšolski otrok ali ne:


Datoteka:em-nested-if-toddler.jpg


Šolo, najstnik ali odrasel. Tukaj je najstnik, ki želi biti anonimen:


Datoteka:em-nested-if-teenager.jpg


Tukaj je logična datoteka skupine. Kot lahko vidite v vprašanju "če temelji", obstajajo ugnezdeni stavki če glede na starost osebe.


Datoteka:em-nested-if-logic-file.jpg


Ko prvotno urejate to vprašanje, je verjetno, da boste na neki točki imeli napačno število oklepajev. Evo, kaj se zgodi, če jih imate premalo:


Datoteka:em-nested-if-missing-closing-paren.jpg


Če miškin kazalec premaknete nad besedo »če«, ki je obdana z rdečim poljem, piše »Oklepaji niso uravnoteženi«. V tem primeru bi morali biti za "že odrasel!" štirje zaključni oklepaji, vendar so le trije.

Če imate po drugi strani dodaten desni oklepaj, bo obkrožen z rdečim poljem, kot je ta:


Datoteka:em-nestedd-if-extra-right-paren.jpg


Ko dejansko urejate vprašanje, je vprašanje videti takole:


Datoteka:em-nested-if-edit-screen.jpg