Navodila za ExpressionScript
From LimeSurvey Manual
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:
- Vir - to je neobdelano besedilo, ki bi ga vnesli v polje z vprašanji LimeSurvey
- 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
- 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:
- 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
- Atributi vprašanja: kaže, da lahko zapis s pikami dostopa do nekaterih lastnosti vprašanj
- Matematika: kaže, da so podprti osnovni in kompleksni izračuni
- Obdelava besedila: prikazuje nekatere razpoložljive funkcije za obdelavo besedila
- Datumi: prikazuje dve razpoložljivi funkciji, povezani z datumom
- Pogojno: prikazuje uporabo funkcije if(). Izbire je mogoče ugnezditi.
- Prilagojeni odstavek: poročilo lahko popolnoma prilagodite na podlagi predhodnih vrednosti
- EM procesi znotraj nizov: kaže, da lahko izvaja zamenjave znotraj nizov. Ta primer generira prilagojeno ime slike.
- 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.
Skladnja EM vsebuje napake
Tukaj so primeri pogostih napak pri tipkanju izrazov ES. Upoštevajte, da opisi orodij zagotavljajo dodatne informacije.
- 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
- 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.
- 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.
- 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
- 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.
- Nepodprta sintaksa
- Če uporabljate operator ali ločila, ki jih ES ne podpira, jih bo označil z rdečim poljem.
- 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
"Ž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".
"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č:
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.
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".
Če spremenim vrednost za število otrok na 1, se zaslon takoj spremeni v to, čeprav je na isti strani:
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:
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:
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:
Ko začnete vnašati odgovor, se začne tudi postopek prilagajanja:
Ko vnesete odgovore, se tabela na dnu strani posodobi, da prikaže kode odgovorov in vrednosti vaših odgovorov.
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«.
Če vnesete ime, piše "Pozdravljeni {name}."
Če vnesete starost, prejmete prilagojeno sporočilo glede na to, ali ste predšolski otrok ali ne:
Šolo, najstnik ali odrasel. Tukaj je najstnik, ki želi biti anonimen:
Tukaj je logična datoteka skupine. Kot lahko vidite v vprašanju "če temelji", obstajajo ugnezdeni stavki če glede na starost osebe.
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:
Č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:
Ko dejansko urejate vprašanje, je vprašanje videti takole: