Actions

ExpressionScript Engine - Ghid de pornire rapidă

From LimeSurvey Manual

This page is a translated version of the page ExpressionScript Engine - Quick start guide and the translation is 100% complete.


Ghid de pornire rapidă

În LimeSurvey, vă puteți personaliza în continuare sondajele prin utilizarea ExpressionScript (scurt: ES). Notă laterală: „ExpressionScript a fost numit Expression Manager (EM) în versiunea anterioară. Dacă citiți Expression Manager undeva, este doar vechiul nume al ES."

ES poate fi folosit pentru a specifica următoarele:

  1. Navigație/Branching - permite răspunsurilor unui respondent să schimbe ordinea în care sunt afișate întrebările;
  2. Croitorie/Conducte - vă ajută să formulați întrebarea (cum ar fi referirea la răspunsuri anterioare sau conjugarea propozițiilor bazate pe vârsta sau sexul subiecților) sau cum să generați rapoarte personalizate (cum ar fi scoruri de evaluare sau sfaturi personalizate);
  3. Validare - asigură că răspunsurile trec anumite criterii, cum ar fi valorile minime și maxime sau un anumit model de intrare.

ES oferă o modalitate intuitivă de a specifica logica pentru fiecare dintre aceste caracteristici. Aproape orice puteți scrie ca o ecuație matematică standard este o expresie validă.

ES oferă în prezent acces la 70 de funcții și poate fi extins cu ușurință pentru a susține mai multe. De asemenea, vă permite să vă accesați variabilele folosind nume de variabile care pot fi citite de om (în loc de SGQA names).

Secțiunile următoare arată principalele locuri în care este utilizat ES.


Relevanță (Controlarea navigației/Branching)

Unele sondaje folosesc „Goto Logic”, astfel încât, dacă răspundeți la întrebarea 1 cu opțiunea C, sunteți redirecționat la întrebarea 5. Această abordare este foarte limitată, deoarece este greu de validat. În plus, se rupe cu ușurință atunci când trebuie să reordonezi întrebările. Pe de altă parte, ES utilizează Ecuații de relevanță booleene pentru a specifica toate condițiile în care o întrebare ar putea fi validă. Dacă întrebarea este relevantă, atunci întrebarea este afișată, în caz contrar, nu este aplicabilă, iar valoarea „NULL” este stocată în baza de date.

Notă: Acest lucru este similar cu ceea ce se poate face prin Editorul de condiții, dar ES vă permite să specificați cu ușurință criterii mult mai complexe și mai puternice (și vă permite să utilizați numele variabilei mai degrabă decât identificatori SGQA).




Pentru a înțelege mai bine conceptul de relevanță, să ne concentrăm pe următorul sondaj care calculează indicele de masă corporală (IMC) al respondenților la sondaj. Pentru a-l descărca, faceți clic pe următorul link: Exemplu de sondaj cu indicele de masă corporală.

Ecuația relevanței este afișată mai jos în coloana Relevanță după numele variabilei. Valorile de relevanță pentru greutate, greutate_unități, înălțime și înălțime_unități sunt toate 1 (valoare implicită), ceea ce înseamnă că acele întrebări sunt întotdeauna afișate. Cu toate acestea, relevanța pentru IMC este {!is_empty(height) și !is_empty(greutatea)}, ceea ce înseamnă că IMC va fi calculat numai dacă subiectul introduce o valoare atât pentru înălțime, cât și pentru greutate (evitând astfel riscul de a obține o eroare zero). De asemenea, întrebarea „Raport” este afișată numai dacă respondentul răspunde la toate cele patru întrebări principale (înălțime, unități de înălțime, greutate, unități de greutate).



Notă: Imaginea de mai sus provine din survey logic file care vă permite să căutați erori de sintaxă înainte de a activa sondajul.


Relevanța este afișată și poate fi editată atunci când:

  • doriți să vizualizați/editați relevanța la nivel de întrebare
  • doriți să vedeți/editați relevanța la nivel de grup


Vizualizarea / Editarea relevanței la nivel de întrebare

Această ecuație calculează indicele de masă corporală (IMC). Se întreabă doar dacă persoana își introduce înălțimea și greutatea.



Acesta este ecranul de editare pentru întrebarea „IMC”.



Rețineți că nu folosiți acolade atunci când introduceți o ecuație de relevanță.


Vizualizarea/Editarea relevanței la nivel de grup

Să ne concentrăm acum pe un alt exemplu - un simplu sondaj de recensământ. Pentru a-l descărca, faceți clic pe următorul link: Exemplu de sondaj de recensământ.

Prima pagină întreabă câți oameni locuiesc cu tine și stochează asta în variabila „cohabs”. Această pagină este afișată numai dacă ai mai mult de un concubin (este afișată pentru a doua persoană care conviețuiește cu tine). De asemenea, p2name, p2age. p2sum sunt afișate numai dacă întrebarea dinaintea fiecăreia dintre ele conține un răspuns.



Deci, grupul are, de asemenea, criterii de relevanță la nivel de întrebare, astfel încât unele întrebări apar numai dacă ați răspuns la anumite întrebări înaintea lor (de exemplu, p2age este afișat dacă s-a răspuns p2name). ES combină relevanța la nivel de grup și de întrebare pentru tine. Întrebările dintr-un grup sunt adresate doar dacă grupul în ansamblu este relevant. Apoi, sunt adresate doar subsetul de întrebări din cadrul grupului care sunt relevante.

Iată captura de ecran pentru editarea relevanței la nivel de grup a „Cohabitant 2”:



Rețineți că nu utilizați acolade atunci când introduceți o ecuație de relevanță.

Croitoria/tubulatură

ES vă permite să faceți cu ușurință o croială condiționată simplă și complexă. Uneori ai nevoie doar de o simplă înlocuire, cum ar fi să spui „Ai spus că ai cumpărat [ Produs]. Ce ți-a plăcut cel mai mult la ea?". Uneori ai nevoie de înlocuire condiționată precum „ [ domnul/doamna] [ Nume], ați fi dispus să completați sondajul nostru?". În acest caz, doriți să utilizați „Dl. sau doamna." în funcție de sexul persoanei. Alteori aveți nevoie de substituții și mai complexe (cum ar fi bazate pe un calcul matematic). ES acceptă fiecare dintre aceste tipuri de croitorie/tubulatură.


Ecuații condiționate

Exemplul de indice de masă corporală arată capacitatea de a calcula IMC al unei persoane, chiar dacă îi permite să-și introducă înălțimea și greutatea în două unități diferite (cm vs inci și kg vs lbs):



În acest caz, greutate kg este {dacă (unități de greutate == „kg”, greutate, greutate * 0,453592)}. Această funcție „dacă()” înseamnă că, dacă subiectul introduce greutatea folosind kilograme, folosește acea valoare, altfel înmulțiți valoarea introdusă (alternativă este lire sterline) cu 0,453592 pentru a o converti în kilograme. Variabila înălțime folosește o abordare similară pentru a calcula înălțimea persoanei în metri (înălțimea în cms/100), chiar dacă aceasta și-a introdus înălțimea în inci (1 metru = 3,28084 inci).

IMC este calculat ca: {greutate kg / (înălțime m * înălțime m)}.

În cele din urmă, raportul adaptează în mod condiționat mesajul pentru subiect, spunându-i ce a introdus. (de exemplu, „Ai spus că ai 2 metri înălțime și că cântărești 70 kg”).

În imaginea de mai jos, weightstatus folosește declarații „if()” imbricate pentru a clasifica persoana ca subponderală până la obezitate severă. Puteți vedea ecuația sa verificând logica:



Din fereastra de editare pentru această întrebare, puteți vedea două lucruri:

  1. Croitoria trebuie să înconjoare expresiile cu bretele
  2. Expresiile se pot întinde pe mai multe linii dacă, ca în acest caz, doriți să facilitați citirea logica condițională imbricată.



Întrebări, răspunsuri și rapoarte personalizate

Notă: Este posibil ca personalizarea dinamică să nu funcționeze dacă opțiunile de răspuns sunt disponibile în casetele de selectare de pe aceeași pagină de întrebări. Acest lucru rezultă din faptul că inserțiile de croitorie a etichetă care nu este validă în cadrul opțiunilor selectate.

Raportul IMC arată astfel:



Iată fereastra de editare pentru aceeași întrebare.



Orice lucru din acolade este tratat ca o expresie, fiind evidențiat de sintaxă (codat de culoare) în imaginea anterioară. Dacă aveți greșeli de scriere (cum ar fi numele sau funcțiile variabilelor scrise greșit sau nedefinite), ES ar afișa o eroare. În exemplul nostru de mai jos:

  • heightunit.sown este un nume de variabilă nedefinit (de fapt este heightunits.sown) și
  • „rnd()” este o funcție nedefinită (numele propriu al funcției este „round()” ).

În ambele cazuri, erorile sunt localizate într-o casetă roșie pentru a le facilita identificarea și remedierea.



De asemenea, puteți vedea că puteți crea rapid rapoarte complexe, cum ar fi un tabel cu valorile introduse sau sfaturi personalizate.

Vă rugăm să rețineți că toate croirile trebuie să înconjoare expresiile cu acolade, astfel încât LimeSurvey să știe care părți ale întrebării sunt text liber și care ar trebui analizate de motorul ExpressionScript.


Validare

ES controlează modul în care funcționează majoritatea opțiunilor avansate de întrebare. Acestea controlează aspecte precum numărul min/max de răspunsuri, valorile individuale min/max, valorile sume min/max și verificarea faptului că valorile introduse se potrivesc cu modelele de șiruri specificate. Orice valoare dintr-unul dintre aceste câmpuri este considerată o expresie, așa că puteți avea criterii min/max cu relații condiționate complexe cu alte întrebări.

În toate aceste cazuri, deoarece atributul de întrebare avansată este întotdeauna considerat o expresie, nu folosiți acolade atunci când îl specificați.

Pagina eșantion de anchete prezintă multe exemple de lucru care conțin o varietate de expresii de validare.

ExpressionScript - prezentare

Pentru a afla mai multe despre ExpressionScript și despre cum puteți utiliza diferite expresii pentru a vă îmbunătăți sondajul, vă rugăm să faceți clic pe următorul de prezentare.