Actions

ExpressionScript sample surveys/sl: Difference between revisions

From LimeSurvey Manual

(Created page with "Č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 spr...")
(Created page with "==Posnetki zaslona==")
Line 393: Line 393:




==Screenshots==
==Posnetki zaslona==





Revision as of 08:19, 19 December 2023


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

Let's check together the below example. The first random question on the page will either be Q1 , Q4, or Q7. The second randomized question on the page will either be Q2, Q5, or Q8.



Here is the randomization generated the first time I tested this survey.



A different randomization was generated the second time I tested the survey.



But, when I switched to French (without re-starting the survey), the randomization order remained intact.



Download

To download the above example, click on the following link: Randomization_Group_Test.lss


Randomly Ask One Question Per Group

Overview

This survey shows how you can configure a survey to randomly display one question per group. In it, there are 5 groups of 6 questions each. At the outset, in Group 0, five hidden Equation questions, called ask1-ask5, are populated. Each one has the value of {floor(rand(1,6.9999))} in the question text field, which means that the variables ask1-ask5 will each have a value between 1 and 6. Then, each question in the group has a relevance equation like "ask1==N" where N is the Nth question in the group (so the third question in group 1 has the relevance equation "ask1==3").

This survey works equally well in survey-at-a-time, group-by-group, and question-by-question modes. Since the randomization is set in the first group, and that group is effectively hidden (since all of the ask1-ask5 questions are hidden), the randomization stays the same for the subject; but each different subject will have a distinct randomization.


Features Demonstrated

  1. Equation question type
  2. Randomization functions
  3. Conditional (if) function


Screenshots

This is Group0, which uses the Equation question type to select random values from 1 to 6 for each group (except the last group, which has only 4 questions). Note that the "if()" function first checks whether ask1 has already been set, and if so, uses that value. If the value hasn't been set, then it uses a random value to set the value of ask1.



This Group shows how the variable (ask4) from Group0 is used to control which question is visible within the fourth group.



Download

To download the above survey example, click here: Random questions within a group survey example.


Randomly Ask A Specific Number Of Questions In A Group (a subset of the questions)

  This applies only to all random questions from one group and only if the Group by group or All in one format is used.



Overview

This survey shows how to ask a random subset of questions in a group. For example, show 5 random questions out of 10 questions located within a group.

The survey has one group containing 10 questions. All questions are assigned the same randomization group name. As a result, they will be displayed in a random order on page load. Each question is given a relevance equation that the sum of the "relevanceStatus" of all other questions in the group is less than the number of questions you want to show. Since relevanceStatus is assigned as questions are rendered, this effectively totals the number of preceding questions.

So, in our 5 out of 10 example, the equation for Q1 would be:

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

For Q2, it would be:

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

And so on...


Features Demonstrated

  1. relevanceStatus variable
  2. Randomizing

Download

To download the above example, click on the following link: Random 5 out of 10 survey example.

Rating User-Entered List of Products

Overview

The below example shows how you can ask users to list a set of products that interest them, and then have them rate those products.


ES Features Demonstrated

  1. Tailoring answers - when rating products, the labels come from the comment field of the preceding multiple choice question
  2. Tailoring scales - many advanced questions options, like scale headings, can also be tailored.


Screenshots

This image shows that since only products 1,3, and 5 were selected, only those 3 are displayed (using the array_filter attribute). Moreover, the row labels in the second question are either the product numbers (if nothing is entered into the comment field) or the contents of the comment fields.



This image shows how the tailored answers are specified:



Here is the Show Logic File for that question, which lets us verify that the conditional logic works as desired (e.g., to see whether there are any syntax errors):



The next image shows a group in which you specify a 5 point rating scale (Options 1-5), the title of the scale, and the products you want to rate. The final question shows that each of the parts of the array question can be tailored:



The next image shows the logic file view of the last question. As you can observe, the subquestions, answers, and scale headers can be tailored.


Download

To download the survey example from above, click on the following link: Rating user-entered list of products survey example.