Actions

Vzorčne ankete ExpressionScript

From LimeSurvey Manual

This page is a translated version of the page ExpressionScript sample surveys and the translation is 100% complete.


Uvod

Najboljši način, da se naučite uporabljati ExpressionScript, je, da se igrate z delujočimi primeri in jih prilagodite svojim potrebam.

Spodaj lahko najdete nabor vzorčnih anket, ki prikazujejo (in preizkusijo), kako lahko EM uporabite za izboljšanje vaše ankete. Te ankete najdete v mapi /docs/demosurveys distribucije.


Ustreznost, prilagajanje in enačbe

Pregled

Naslednji primer izračuna BMI (indeks telesne mase) vsakega anketiranca. Spodaj si oglejte funkcije, ki so prikazane v tem primeru.

Demonstrirane funkcije EM

  1. 'Ustreznost - podpora za zmogljivo pogojno logiko;
  2. Piping / Tailoring - ponuja možnost napeljave ali prilagajanja odgovorov in metapodatkov vprašanj;
  3. Dinamično prilagajanje - upoštevajte, da se poročila spreminjajo na strani, ko odgovarjate na vprašanja.
  4. Mikro krojenje - pogojno prilagajanje v stavkih in poročilih z uporabo stavkov if()
  5. Enačbe - nova vrsta vprašanja, ki vam omogoča izračune in shranjevanje rezultatov v bazo podatkov, tudi če je izračun skrit
  6. Pogojno preverjanje' - preverjanje kriteriji, kot je najmanjša dovoljena vrednost, so lahko pogojni – npr. na podlagi enačb.


Posnetki zaslona

Ta primer izračuna indeks telesne mase, izračun vaše teže in višine za ugotavljanje, ali imate premajhno telesno težo, normalno težo, prekomerno telesno težo ali debelost. Upoštevajte, da na začetku vidite le štiri obvezna vprašanja:



Ko vnesete svoje podatke (in lahko izberete, ali boste uporabili metrične ali nemetrične enote), vidite prilagojeno poročilo, ki povzema, kar ste vnesli, in vam pove stanje vaše teže:



Tukaj je drugačen primer z uporabo nemetričnih enot za prikaz, kako se rezultat dinamično spreminja:



Obstajajo skrite Vprašanja tipa enačbe na notranji ravni, ki pretvori podatke v metriko (če je potrebno), shranjuje metrično višino, težo, BMI in stanje teže v zbirki podatkov, ne da bi potreboval JavaScript po meri .

V naslednjem nizu primerov si lahko ogledate, kako lahko uporabite matematične in druge funkcije znotraj prilagojenih poročil. Tako izgleda stran, preden vnesete podatke. Obstaja pogojna logika za prikaz praznih celic, če niso vneseni nobeni (ali neštevilski) podatki, namesto da bi prikazali »NaN« ali »Deli z ničlo«.



Ko so številke vnesene, se poročilo na strani spremeni, da prikaže izvedeni izračun in njegov rezultat.



V tej vzorčni raziskavi je veliko drugih primerov. Spodnji posnetek zaslona na primer prikazuje enega od ducatov načinov, kako lahko izpolnite stran z dinamično ustreznostjo. Kot piše v besedilu pomoči, poskusite različne starosti in še posebej nelogične kombinacije odgovorov, da vidite zabavna sporočila, ustvarjena na dnu. Upoštevajte tudi, da če rečete, da imate več kot enega otroka, bo sporočilo pisalo "Upam, da uživate v igri s svojimi X otroki", namesto "Upam, da uživate v igri s svojim otrokom". To kaže, kako lahko enostavno mikroprikrojite stavke, da se ujemajo s spolom in/ali številom vaših predmetov. Z lahkoto lahko celo spregate glagole in zavrnete samostalnike glede na spol in število.



Prenos

Za dostop do vzorca ankete kliknite naslednjo povezavo: LS3_em_tailoring.zip.

Vzorec popisa

Pregled

To je primer popisa, ki sprašuje, koliko ljudi je v vašem gospodinjstvu.

Prikazuje, kako lahko ustreznost na ravni skupine olajša implementacijo "zanke" vprašanj. Ko sem ustvaril skupino za osebo 1, sem izvozil skupino. Ker sem namesto kode SGQA uporabil imena spremenljivk qcode, kot je p1_name, sem lahko uporabil urejevalnik besedila za hitro urejanje in večkratni ponovni uvoz skupine (npr. urejanje in ponovni uvoz vsake ponavljajoče se skupine je trajalo približno 10 sekund, kar zagotavlja da so vse spremenljivke imele edinstvena imena spremenljivk in da je bila logika na ravni skupine pravilna).

Lahko tudi funkcijo kopiraj vprašanje, vendar ne bo tako hitra kot zgoraj predlagana možnost.

To tudi pokaže, kako lahko preprečite prikaz sporočila Končano, dokler anketa ni resnično končana (npr. ko so izpolnjene vse potrebne skupine).


Demonstrirane funkcije EM

  1. 'Ustreznost na ravni skupine' - Spremljevalne skupine (Osebe 1-5) se prikažejo samo za največ navedeno število sostanovalcev;
  2. Prilagoditev' - Končno poročilo povzema demografski podatki za vsakega sostanovalca;
  3. Progresivni prikaz vprašanj - Ne glede na to, ali je v skupinskem načinu ali načinu vse v enem, se naslednja vprašanja prikažejo šele, ko je odgovorjen na prejšnja.


Posnetki zaslona

Anketa ustvari prilagojeno poročilo, ki prikazuje demografske podatke določenega števila sostanovalcev:



Če preklopite na način vprašanja naenkrat, vidite, da indeks prilagaja vprašanja. Ker je uporabnik rekel, da je oseba ženska, vpraša "Kako ji je ime". In ker smo odgovorili "Mary", je naslednje vprašanje "Koliko je stara Mary"?



Prenos

Če želite prenesti vzorec ankete, kliknite tukaj: LS3_group_relevance.zip.


Kaskadni matrični filtri

Pregled

Ta anketa temelji na zasnovi ankete, ki jo je izvedlo Joy Lane Research, LLC.


Posnetki zaslona

V nadaljevanju upoštevajte, da:

  • Q02 prikazuje samo nabor izdelkov, preverjenih v Q01 (z uporabo array_filter)
  • Q02 prikazuje tudi "Drug izdelek", besedilo, vneseno v polje "Druga elektronika" v Q01
  • Q04 prikazuje samo izdelke iz Q02, ki so bili preverjeni (zato filter matrike kaskadira)
  • Q05 prikazuje samo izdelke iz Q02, ki niso bili preverjeni v Q02 (z uporabo kaskadnega array_filter_exclude)


Datoteka:cascading_array_filter.jpg


Datoteka:cascading_array_filter2.jpg


Prenos

Kliknite naslednjo povezavo za prenos zgornjega primera: LS2_cascading_array_filter primer ankete.


Piping/prilagoditev z uporabo vseh vrst vprašanj in atributov

Pregled

Če ste zmedeni, kako poimenovati svoje spremenljivke (SGQA proti Qcodes), niste sami. Čeprav glavna dokumentacija opisuje kako sestaviti imena spremenljivk Qcode, ni nič boljšega od tega, da si ga ogledate v delujoči predstavitvi. Ta anketa prikazuje, kako lahko dostopate do atributov vprašanj in odgovorov s pomočjo ExpressionScript.


Template:Opomba


Vsebina

  • Primeri vsake vrste vprašanja
  • Vključeni so vsi tipi vprašanj, ki lahko uporabljajo »drugo«, tako da lahko vidite, kako to vpliva na poimenovanje spremenljivk
  • Privzete vrednosti za vse vrste vprašanj, ki sprejemajo privzete
  • Prilagajanje - Poročila na strani in zunaj nje, ki prikazujejo vseh 16 razpoložljivih pripon EM pikčastega zapisovanja.
  • Ta poročila prikazujejo vse trenutno vnesene podatke (zato vam pokažemo, kako lahko ustvarite lastna poročila za tiskanje za uporabnike namesto tiskanih- zaslon z odgovori)
  • Pravilno poimenovanje Qcode in SGQA vseh spremenljivk


Posnetki zaslona

To je obsežna raziskava, zato smo se odločili, da ne bomo vključili posnetkov zaslona. Namesto tega ga prenesite in se igrajte z njim.


Prenos

Za prenos ankete kliknite naslednjo povezavo: LS3_EM_question_attributes.lss

Tradicionalna validacija, na novo zasnovana

Pregled

To prikazuje vse vrste preverjanja, ki uporabljajo izraze, in kako vplivajo na posamezne vrste vprašanj, ki podpirajo preverjanje. V mnogih primerih se namigi za preverjanje začnejo skriti in se prikažejo samo, če vprašanje ne izpolnjuje meril za preverjanje (torej tudi izginejo, ko vprašanje prestane merila za preverjanje).


Prikazane vrste preverjanja

  1. min_num_value_n - najmanjša vrednost za odgovor
  2. max_num_value_n - največja vrednost za odgovor
  3. min_answers - najmanjša zahtevano število odgovorov
  4. max_answers največje dovoljeno število odgovorov
  5. multiflexible_min - najmanjša dovoljena vrednost za odgovor (za vrsto vprašanja s številkami multiflexi)
  6. multiflexible_max - največja dovoljena vrednost za odgovor (za vrsto vprašanja s številkami multiflexi)
  7. min_num_value - najmanjša dovoljena vsota vseh odgovorov za vprašanje
  8. max_num_value - največja dovoljena vsota vseh odgovorov na vprašanje
  9. equals_num_value - vsota vseh odgovorov na vprašanje mora biti enaka tej vrednosti
  10. validation - to je validacija regularnega izraza za vprašanje - lahko velja za posamezne celice


Posnetki zaslona

Z uporabo novih slogov CSS se za vsako vrsto preverjanja prikaže ločen nasvet. Če so prikazani, jih je mogoče skriti z možnostjo hide_tip. Privzeta možnost je, da jih prikažete z rdečo pisavo, če vprašanje ne izpolnjuje meril za preverjanje, in z zeleno, če jih prestane:



Uporabnik ne more oddati strani z napakami pri preverjanju. Če je vnesel napačne podatke, bo takoj opozorjen:



Preverjanje veljavnosti je mogoče uporabiti za posamezne celice v matriki, kot na primer v tem primeru, kjer preverjanje regularnih izrazov zagotavlja, da je vsak vnos pravilno oblikovana telefonska številka ZDA, vključno z območno kodo.



Prenos

Če želite prenesti zgornji primer, kliknite naslednjo povezavo: LS3_Validation_tests.zip.


Validacijske enačbe

Pregled

Včasih potrebujete preverjanje po meri, ki ga ni mogoče doseči z uporabo tradicionalnih najmanjših/največjih meril. Za to boste morali uporabiti možnosti em_validation_q in em_validation_sq, ki vam omogočata, da sestavite kompleksne validacijske enačbe na ravni vprašanja oziroma podvprašanja.


Template:Opomba


Demonstrirane funkcije EM

  1. em_validation_q - to je enačba, ki določa, ali je celotno vprašanje veljavno
  2. em_validation_q_tip - to je sporočilo, ki se prikaže, če vprašanje ne izpolnjuje kriterijev em_validation_q
  3. em_validation_sq - to je enačba, ki določa, ali je vsako podvprašanje (matrična celica) veljavno
  4. em_validation_sq_tip - to je sporočilo, ki se prikaže, če obstaja podvprašanj je neveljavno.

Na splošno se pri uporabi em_validation_sq, če je katera koli celica neveljavna, barva ozadja te celice obarva rdeče, kar pomeni, da je prišlo do napake.


Posnetki zaslona


To vprašanje zagotavlja, da vnesete starost svojih otrok v padajočem vrstnem redu z uporabo te potrditvene enačbe:

q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4





V spodnjem primeru preverjanje zagotavlja, da v kateri koli dani vrstici ni odgovorjeno na več kot 3 vprašanja z uporabo te potrditvene enačbe:

(vsota(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= 3) && (vsota(Test_B_1, Test_B_2, Test_B_3, Test_B_4, Test_B_5) <= 3) && (vsota(Test_C_1, Test_C_2, Test_C_3, Test_C_4, Test_C_5) < = 3)

To lahko zapišete tudi na naslednji način, pri čemer ga LimeSurvey med izvajanjem samodejno pretvori v zgoraj navedeni izraz.

(sum(self.sq_A) <= 3) && (sum(self.sq_B) <= 3) && (sum(self.sq_C) <= 3)



Prenos

Če želite prenesti vzorec ankete, uporabljen v zgornjih primerih, kliknite naslednjo povezavo: ls2_test_em_sq_validation.lss.


Ustreznost podvprašanja

Pregled

To prikazuje, kako lahko array_filter in merila za preverjanje medsebojno delujejo. Za validacije, ki veljajo za vsote, se upoštevajo samo ustrezne (vidne) vrednosti.


Demonstrirane funkcije EM

  1. array_filter
  2. array_filter_exclude
  3. min_num_value
  4. max_num_value
  5. equals_num_value

Prikazuje tudi dinamično poročanje o številu vprašanj, na katera so odgovorili v ključnih vprašanjih.


Posnetki zaslona

Spreminjanje števila vidnih vrstic dinamično spremeni vsoto. Označevanje podvprašanja kot nepomembnega ne počisti njegove vrednosti. Namesto tega, če je nepomemben, njegove vrednosti ne prispevajo k nobeni enačbi.


Datoteka:sqrel1.jpgDatoteka:Sqrelver12.png


Upoštevajte, kaj se zgodi, ko označimo "Peto podvprašanje" za prvo vprašanje "Katere vrstice naj se prikažejo spodaj". Upoštevajte, da je vsota za drugo vprašanje "Vnesite nekaj številk" zdaj 5. Čeprav ima podvprašanje 5 za to vprašanje še vedno vrednost 14 (npr. če počistite peto podvprašanje, boste znova videli vrednost 14) , ta vrednost ne prispeva k vsoti, ker je trenutno nepomembna. Vsi nepomembni podatki so ob oddaji izbrisani (v zbirki podatkov označeni za NULL), vendar ostanejo na voljo na strani, če si uporabniki želijo ali si morajo premisliti glede odgovorov.



Prenos

Če želite prenesti naš primer, kliknite tukaj: ls2_subquestion_relevance.lss.


Uporaba vejice kot ločila korena (decimalna vejica)

Pregled

ExpressionScript zagotavlja, da je v številska polja mogoče vnesti samo veljavna števila. Če vnesete neveljavno številko, boste opozorjeni, da je nekaj narobe (npr. v primeru sadne teme je celotno vprašanje "rdeče-rdečo").

Upoštevajte, da se številske vrednosti vedno pretvorijo v uporabo pike kot ločila korena v zbirki podatkov. Na ta način bodo statistične analize delovale ustrezno.

Če želite spremeniti ločilo radiksa, odprite možnosti Besedilni elementi pod zavihkom Nastavitve in poiščite funkcijo decimalno znamenje.


Template:Opomba


Vrste vprašanj z uporabo ločila radix

  1. Numerični vnos [ N]
  2. Večštevilski vnos [ K]
  3. Matrika (števila) [ :]
  4. Matrika (besedila) [ ;], če uporabljate atribut numbers_only
  5. Seznam (radio) [ L], če uporabljate atribut other_numbers_only
  6. Kratko prosto besedilo [ S], če uporabljate atribut numbers_only
  7. Več kratkih besedil [ Q], če uporabljate atribut numbers_only
  8. več možnosti [ M], če uporabljate atribut other_numbers_only atribut
  9. Več odgovorov s komentarji [ P], če uporabljate atribut other_numbers_only


Posnetki zaslona

Na spodnjih posnetkih zaslona boste morda opazili, da je vejico mogoče uporabiti kot ločilo radiksa.



Prenos

Če želite prenesti zgornji primer, kliknite naslednjo povezavo: ls2_comma_as_radix_separator.lss.


Naključne skupine

Pregled

Ta anketa prikazuje, kako uporabiti atribut random_group.

Če uporabite ta atribut, se vsakič, ko začnete anketo, vrstni red vprašanj naključno določi. Ko se anketa začne, ostane naključni vrstni red nespremenjen, tudi če spremenite jezik.


Posnetki zaslona

Skupaj preverimo spodnji primer. Prvo naključno vprašanje na strani bo Q1, Q4 ali Q7. Drugo naključno izbrano vprašanje na strani bo Q2, Q5 ali Q8.



Tukaj je randomizacija, ustvarjena ob prvem testiranju te ankete.



Ko sem drugič testiral anketo, je bila ustvarjena drugačna randomizacija.



Toda ko sem preklopil na francoščino (brez ponovnega zagona ankete), je vrstni red naključnega izbiranja ostal nedotaknjen.



Prenos

Za prenos zgornjega primera kliknite naslednjo povezavo: Randomization_Group_Test.lss


Naključno postavite eno vprašanje na skupino

Pregled

Ta anketa prikazuje, kako lahko konfigurirate anketo za naključni prikaz enega vprašanja na skupino. V njej je 5 skupin po 6 vprašanj. Na začetku je v skupini 0 zapolnjenih pet skritih vprašanj enačb, imenovanih ask1-ask5. Vsak ima vrednost {floor(rand(1,6.9999))} v besedilnem polju vprašanja, kar pomeni, da bo vsaka od spremenljivk ask1-ask5 imela vrednost med 1 in 6. Nato ima vsako vprašanje v skupini enačba relevantnosti, kot je "ask1==N", kjer je N N-to vprašanje v skupini (torej ima tretje vprašanje v skupini 1 enačbo relevantnosti "ask1==3").

Ta anketa deluje enako dobro v načinih anketa naenkrat, skupina za skupino in vprašanje za vprašanje. Ker je randomizacija nastavljena v prvi skupini in je ta skupina dejansko skrita (ker so vsa vprašanja ask1-ask5 skrita), ostane randomizacija za subjekt enaka; vendar bo imel vsak različen predmet ločeno randomizacijo.


Prikazane lastnosti

  1. Vrsta vprašanja enačbe
  2. Funkcije naključnega izbiranja
  3. Pogojna (če) funkcija


Posnetki zaslona

To je skupina 0, ki uporablja vrsto vprašanja enačbe za izbiro naključnih vrednosti od 1 do 6 za vsako skupino (razen zadnje skupine, ki ima samo 4 vprašanja). Upoštevajte, da funkcija "if()" najprej preveri, ali je ask1 že nastavljen, in če je, uporabi to vrednost. Če vrednost ni nastavljena, potem uporabi naključno vrednost za nastavitev vrednosti ask1.



Ta skupina prikazuje, kako se spremenljivka (ask4) iz skupine Group0 uporablja za nadzor, katero vprašanje je vidno v četrti skupini.



Prenos

Če želite prenesti zgornji primer ankete, kliknite tukaj: Naključna vprašanja v primeru skupinske ankete.


Naključno postavite določeno število vprašanj v skupini (podmnožica vprašanj)

Template:Opozorilo


Pregled

Ta anketa prikazuje, kako postaviti naključno podskupino vprašanj v skupini. Na primer, pokažite 5 naključnih vprašanj od 10 vprašanj, ki se nahajajo v skupini.

Anketa ima eno skupino, ki vsebuje 10 vprašanj. Vsem vprašanjem je dodeljeno isto ime naključne skupine. Posledično bodo prikazani v naključnem vrstnem redu ob nalaganju strani. Vsakemu vprašanju je podana enačba ustreznosti, tako da je vsota "relevanceStatus" vseh drugih vprašanj v skupini manjša od števila vprašanj, ki jih želite prikazati. Ker je relevanceStatus dodeljen, ko so vprašanja upodobljena, to dejansko sešteje število predhodnih vprašanj.

Torej bi bila v našem primeru 5 od 10 enačba za Q1:

sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5

Za Q2 bi bilo:

sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5

In tako naprej...


Prikazane lastnosti

  1. relevanceStatus variable
  2. Randomizing

Prenos

Če želite prenesti zgornji primer, kliknite naslednjo povezavo: Naključni primer ankete 5 od 10.

Ocenjevanje seznama izdelkov, ki ga je vnesel uporabnik

Pregled

Spodnji primer prikazuje, kako lahko od uporabnikov zahtevate, da navedejo nabor izdelkov, ki jih zanimajo, nato pa naj ocenijo te izdelke.


Predkazane lastnosti ES

  1. 'Prilagajanje odgovorov' – pri ocenjevanju izdelkov oznake izvirajo iz polja za komentar prejšnjega vprašanja z več možnimi odgovori
  2. 'Prilagajanje lestvic' – številne napredne možnosti vprašanj, kot so naslovi lestvic, lahko biti tudi prilagojena.


Posnetki zaslona

Ta slika prikazuje, da ker so bili izbrani samo izdelki 1, 3 in 5, so prikazani samo ti 3 (z uporabo atributa array_filter). Poleg tega so oznake vrstic v drugem vprašanju bodisi številke izdelkov (če v polje za komentarje ni vneseno nič) bodisi vsebina polj za komentarje.



Ta slika prikazuje, kako so določeni prilagojeni odgovori:



Tukaj je Prikaži logično datoteko za to vprašanje, ki nam omogoča, da preverimo, ali pogojna logika deluje po želji (npr. da vidimo, ali obstajajo sintaksne napake):



Na naslednji sliki je prikazana skupina, v kateri določite 5-točkovno ocenjevalno lestvico (možnosti 1-5), naslov lestvice in izdelke, ki jih želite oceniti. Zadnje vprašanje kaže, da je mogoče vsakega od delov matričnega vprašanja prilagoditi:



Naslednja slika prikazuje pogled logične datoteke zadnjega vprašanja. Kot lahko opazite, je mogoče podvprašanja, odgovore in naslove lestvic prilagoditi.


Prenos

Če želite prenesti primer ankete od zgoraj, kliknite naslednjo povezavo: Primer ankete o ocenjevanju seznama izdelkov, ki ga je vnesel uporabnik.