Ukážkové prieskumy Expression Manager
From LimeSurvey Manual
Úvod
Najlepší spôsob, ako sa naučiť používať ExpressionScript, je vyskúšať si funkčné príklady a upraviť ich podľa vlastných potrieb.
Nižšie nájdete sadu ukážkových prieskumov, ktoré demonštrujú (a umožňujú otestovať), ako možno EM využiť na vylepšenie vášho prieskumu. Tieto prieskumy nájdete v priečinku /docs/demosurveys v distribučnom balíku.
Relevantnosť, prispôsobenie a rovnice
Prehľad
Nasledujúci príklad vypočíta BMI (index telesnej hmotnosti) každého respondenta. Funkcie, ktoré tento príklad demonštruje, nájdete nižšie.
Demonštrované funkcie EM
- Relevantnosť - podpora výkonnej podmienenej logiky;
- Piping / prispôsobenie - umožňuje vkladať alebo prispôsobovať odpovede a metadáta otázok;
- Dynamické prispôsobenie - všimnite si, že sa prehľady na stránke menia počas odpovedania na otázky.
- Mikro-prispôsobenie - podmienené prispôsobenie viet a prehľadov pomocou príkazov if()
- Rovnice - nový typ otázky, ktorý umožňuje vykonávať výpočty a ukladať výsledky do databázy, aj keď je výpočet skrytý
- Podmienená validácia - kritériá validácie, napríklad minimálna povolená hodnota, môžu byť podmienené - napr. na základe rovníc.
Snímky obrazovky
Tento príklad vypočíta index telesnej hmotnosti (BMI) z vašej hmotnosti a výšky a určí, či máte nadváhu. Všimnite si, že spočiatku vidíte iba štyri povinné otázky:

Po zadaní údajov (môžete si vybrať, či použijete metrické alebo nemetrické jednotky) sa zobrazí prispôsobený prehľad, ktorý zhŕňa zadané údaje a uvádza stav vašej hmotnosti:

Tu je ďalší príklad s nemetrickými jednotkami, ktorý ukazuje, ako sa výsledok dynamicky mení:

Na internej úrovni sa nachádzajú skryté otázky typu Rovnica, ktoré v prípade potreby prevedú údaje na metrické jednotky a uložia metrickú výšku, hmotnosť, BMI a stav hmotnosti do databázy bez potreby vlastného JavaScriptu.
V nasledujúcej sade príkladov uvidíte, ako môžete v prispôsobených prehľadoch používať matematické a iné funkcie. Takto vyzerá stránka pred zadaním akýchkoľvek údajov. Podmienená logika zobrazuje prázdne bunky, ak nie sú zadané žiadne (alebo nečíselné) údaje, namiesto zobrazenia "NaN" alebo "Divide by Zero".

Po zadaní čísel sa prehľad na stránke zmení a zobrazí vykonávaný výpočet a jeho výsledok.

V tomto ukážkovom prieskume je mnoho ďalších príkladov. Napríklad nižšie uvedený snímok obrazovky zobrazuje jeden z desiatok spôsobov, ako možno vyplniť stránku Dynamická relevantnosť. Ako uvádza pomocný text, vyskúšajte rôzne vekové údaje a najmä nelogické kombinácie odpovedí, aby ste videli zábavné správy zobrazené v dolnej časti. Všimnite si tiež, že ak uvediete, že máte viac ako jedno dieťa, správa bude znieť "I hope you enjoy playing with your X children" namiesto "I hope you enjoy playing with your child". Ukazuje to, ako môžete jednoducho mikro-prispôsobiť vety tak, aby zodpovedali pohlaviu a/alebo počtu vašich respondentov. Dokonca môžete jednoducho časovať slovesá a skloňovať podstatné mená podľa rodu a čísla.

Stiahnutie
Ak chcete získať ukážkový prieskum, kliknite na nasledujúci odkaz: LS3_em_tailoring.zip.
Ukážkové sčítanie obyvateľov
Prehľad
Toto je príklad sčítania obyvateľov, ktorý sa pýta, koľko ľudí žije vo vašej domácnosti.
Ukazuje, ako môže relevantnosť na úrovni skupiny uľahčiť implementáciu „cyklu“ otázok. Po vytvorení skupiny pre osobu 1 som skupinu exportoval. Keďže som namiesto kódu SGQA použil názvy premenných qcode, ako napríklad p1_name, mohol som pomocou textového editora rýchlo upraviť a opakovane importovať skupinu (napr. úprava a opätovný import každej opakujúcej sa skupiny trvali asi 10 sekúnd, pričom všetky premenné mali jedinečné názvy a logika na úrovni skupiny bola správna).
Môžete tiež použiť funkciu Skopírovať otázku, nebude však taká rýchla ako vyššie navrhovaná možnosť.
Ukazuje to tiež, ako môžete zabrániť zobrazeniu správy o dokončení, kým nie je prieskum skutočne dokončený (napr. keď sú vyplnené všetky potrebné skupiny).
Predvádzané funkcie EM
- Relevantnosť na úrovni skupiny - Nadväzujúce skupiny (osoba 1 – 5) sa zobrazia najviac do počtu zadaných spolubbývajúcich;
- Prispôsobenie (tailoring) - Záverečný report sumarizuje demografické údaje o každom spolubývajúcom;
- Postupné zobrazovanie otázok - Či už v režime po skupinách, alebo všetko naraz, nasledujúce otázky sa zobrazia hneď po zodpovedaní predchádzajúcich.
Snímky obrazovky
Prieskum vygeneruje prispôsobený report zobrazujúci demografické údaje o zadanom počte spolubývajúcich:

Ak prepnete do režimu jednej otázky na stránke, uvidíte, že index otázky prispôsobuje. Keďže používateľ uviedol, že osoba je žena, pýta sa „Ako sa volá?“ (v ženskom rode). A keďže sme odpovedali „Mary“, nasledujúca otázka znie „Koľko rokov má Mary?“

Stiahnutie
Ak si chcete stiahnuť ukážkový prieskum, kliknite sem: LS3_group_relevance.zip.
Kaskádové filtre poľa
Prehľad
Tento prieskum vychádza z návrhu prieskumu, ktorý poskytla spoločnosť Joy Lane Research, LLC.
Snímky obrazovky
Všimnite si nasledovné:
- Q02 zobrazuje iba sadu produktov zaškrtnutých v Q01 (pomocou array_filter)
- Q02 zobrazuje aj „Another product“, text zadaný v poli „Other electronic“ v Q01
- Q04 zobrazuje iba produkty z Q02, ktoré boli zaškrtnuté (filter poľa teda kaskáduje)
- Q05 zobrazuje iba produkty z Q02, ktoré neboli zaškrtnuté v Q02 (pomocou kaskádového array_filter_exclude)


Stiahnutie
Ak si chcete stiahnuť vyššie uvedený príklad, kliknite na nasledujúci odkaz: Ukážkový prieskum LS2_cascading_array_filter.
Piping/Tailoring s použitím všetkých typov otázok a atribútov
Prehľad
Ak si nie ste istí, ako pomenovať svoje premenné (SGQA vs. Qcode), nie ste v tom sami. Hoci hlavná dokumentácia popisuje, ako zostaviť názvy premenných Qcode, nič sa nevyrovná pohľadu na fungujúcu ukážku. Tento prieskum ukazuje, ako môžete pomocou ExpressionScript pristupovať k atribútom otázok a odpovediam.
Obsah
- Príklady každého typu otázky
- Sú zahrnuté všetky typy otázok, ktoré môžu používať možnosť „Iné“, aby ste videli, ako to ovplyvňuje pomenovanie premenných
- Predvolené hodnoty pre všetky typy otázok, ktoré podporujú predvolené hodnoty
- Tailoring - Reporty na stránke aj mimo nej zobrazujúce všetkých 16 dostupných prípon bodkovej notácie EM.
- Tieto reporty zobrazujú všetky aktuálne zadané údaje (takže vám ukážu, ako môžete vytvoriť vlastné tlačiteľné reporty pre používateľov namiesto obrazovky tlače odpovedí)
- Správne pomenovanie všetkých premenných pomocou Qcode a SGQA
Snímky obrazovky
Ide o obrovský prieskum, preto sme sa rozhodli nezahrnúť snímky obrazovky. Namiesto toho si ho stiahnite a vyskúšajte.
Stiahnutie
Prieskum si stiahnete kliknutím na nasledujúci odkaz: LS3_EM_question_attributes.lss
Tradičná validácia v novom šate
Prehľad
Tento príklad demonštruje všetky typy validácie, ktoré využívajú výrazy, a ako ovplyvňujú jednotlivé typy otázok podporujúce validáciu. V mnohých prípadoch sú tipy k validácii spočiatku skryté a zobrazia sa iba vtedy, keď otázka nespĺňa kritériá validácie (a po splnení kritérií opäť zmiznú).
Demonštrované typy validácie
- min_num_value_n - minimálna hodnota odpovede
- max_num_value_n - maximálna hodnota odpovede
- min_answers - minimálny požadovaný počet odpovedí
- max_answers - maximálny povolený počet odpovedí
- multiflexible_min - minimálna povolená hodnota odpovede (pre typ otázky Pole (čísla) s viacerými možnosťami)
- multiflexible_max - maximálna povolená hodnota odpovede (pre typ otázky Pole (čísla) s viacerými možnosťami)
- min_num_value - minimálny povolený súčet všetkých odpovedí na otázku
- max_num_value - maximálny povolený súčet všetkých odpovedí na otázku
- equals_num_value - súčet všetkých odpovedí na otázku sa musí rovnať tejto hodnote
- validation - ide o validáciu otázky pomocou regulárneho výrazu - môže sa použiť na jednotlivé bunky
Snímky obrazovky
Vďaka novým štýlom CSS sa každý typ validácie zobrazuje ako samostatný tip. Ak sa zobrazujú, je možné ich skryť pomocou možnosti hide_tip. Predvolene sa zobrazujú červeným písmom, ak otázka nespĺňa kritériá validácie, a zeleným, ak ich spĺňa:

Používateľ nemôže odoslať stránku s chybami validácie. Ak zadal nesprávne údaje, bude na to okamžite upozornený:

Validáciu je možné použiť na jednotlivé bunky v poli, ako v tomto príklade, kde validácie pomocou regulárnych výrazov zabezpečujú, že každý záznam je správne naformátované americké telefónne číslo vrátane smerového čísla.

Stiahnutie
Uvedený príklad si stiahnete kliknutím na nasledujúci odkaz: LS3_Validation_tests.zip.
Validačné rovnice
Prehľad
Niekedy potrebujete vlastnú validáciu, ktorú nie je možné dosiahnuť pomocou tradičných kritérií minima a maxima. Na tento účel budete musieť použiť možnosti em_validation_q a em_validation_sq, ktoré vám umožňujú vytvárať zložité validačné rovnice na úrovni otázky, respektíve podotázky.
Demonštrované funkcie EM
- em_validation_q - rovnica, ktorá určuje, či je celá otázka platná
- em_validation_q_tip - správa, ktorá sa zobrazí, ak otázka nespĺňa kritériá em_validation_q
- em_validation_sq - rovnica, ktorá určuje, či je každá podotázka (bunka poľa) platná
- em_validation_sq_tip - správa, ktorá sa zobrazí, ak je niektorá z podotázok neplatná.
Vo všeobecnosti platí, že ak sa používa em_validation_sq a niektorá bunka je neplatná, farba pozadia tejto bunky sa zmení na červenú, čím signalizuje chybu.
Snímky obrazovky

Táto otázka zabezpečuje, že zadáte vek svojich detí v zostupnom poradí, a to pomocou tejto validačnej rovnice:
q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4

V nasledujúcom príklade validácia zabezpečuje, že v žiadnom riadku nie je zodpovedaných viac ako 3 otázky. Používa sa na to táto validačná rovnica:
(sum(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= 3) && (sum(Test_B_1, Test_B_2, Test_B_3, Test_B_4, Test_B_5) <= 3) && (sum(Test_C_1, Test_C_2, Test_C_3, Test_C_4, Test_C_5) <= 3)
Môžete ju zapísať aj takto. LimeSurvey ju počas behu automaticky prevedie na vyššie uvedený výraz.
(sum(self.sq_A) <= 3) && (sum(self.sq_B) <= 3) && (sum(self.sq_C) <= 3)

Stiahnutie
Ak si chcete stiahnuť ukážkový prieskum použitý vo vyššie uvedených príkladoch, kliknite na nasledujúci odkaz: ls2_test_em_sq_validation.lss.
Relevantnosť podotázok
Prehľad
Ukážka znázorňuje, ako môžu vzájomne pôsobiť array_filter a validačné kritériá. Pri validáciách, ktoré sa vzťahujú na súčty, sa berú do úvahy iba relevantné (viditeľné) hodnoty.
Ukázané funkcie EM
Ukazuje tiež dynamické zobrazovanie počtu zodpovedaných otázok v základných otázkach.
Snímky obrazovky
Zmenou počtu viditeľných riadkov sa dynamicky mení súčet. Označenie podotázky ako irelevantnej nevymaže jej hodnotu. Ak je však irelevantná, jej hodnoty sa nezapočítavajú do žiadnej rovnice.


Všimnite si, čo sa stane, keď pri prvej otázke "Which rows should appear below" zaškrtnete možnosť "Fifth subquestion". Súčet pri druhej otázke "Enter some numbers" je teraz 5. Hoci piata podotázka tejto otázky stále obsahuje hodnotu 14 (ak zrušíte zaškrtnutie piatej podotázky, hodnotu 14 opäť uvidíte), táto hodnota sa do súčtu nezapočítava, pretože je momentálne irelevantná. Všetky irelevantné údaje sa pri odoslaní vymažú (v databáze sa nastavia na NULL), ale na stránke zostávajú k dispozícii pre prípad, že by chceli respondenti svoje odpovede zmeniť.

Stiahnutie
Ak si chcete stiahnuť náš príklad, kliknite sem: ls2_subquestion_relevance.lss.
Použitie čiarky ako oddeľovača desatinných miest (desatinná čiarka)
Prehľad
ExpressionScript zabezpečuje, že do číselných polí je možné zadať iba platné čísla. Ak zadáte neplatné číslo, zobrazí sa upozornenie, že niečo nie je v poriadku (napr. pri motíve fruity sa celá otázka zobrazí načerveno).
Upozorňujeme, že číselné hodnoty sa v databáze vždy ukladajú s bodkou ako oddeľovačom desatinných miest. Vďaka tomu budú štatistické analýzy fungovať správne.
Ak chcete zmeniť oddeľovač desatinných miest, otvorte možnosti Textové prvky na karte Nastavenia a vyhľadajte funkciu Oddeľovač desatinných miest.
Typy otázok používajúce oddeľovač desatinných miest
- Číselný vstup [N]
- Viacnásobný číselný vstup [K]
- Otázky s číselnou hodnotou z rozbaľovacieho poľa [:]
- Otázky s textovou odpoveďou [;], pri použití atribútu numbers_only
- Zoznam (Radio) [L], pri použití atribútu other_numbers_only
- Krátky text [S], pri použití atribútu numbers_only
- Viacnásobný krátky text [Q], pri použití atribútu numbers_only
- Možnosť výberu viacerých možností [M], pri použití atribútu other_numbers_only
- Možnosť výberu viacerých možností s komentárom [P], pri použití atribútu other_numbers_only
Snímky obrazovky
Na nižšie uvedených snímkach obrazovky si môžete všimnúť, že čiarku možno použiť ako oddeľovač desatinných miest.

Stiahnutie
Ak si chcete stiahnuť uvedený príklad, kliknite na nasledujúci odkaz: ls2_comma_as_radix_separator.lss.
Skupiny náhodného poradia
Prehľad
Tento prieskum ukazuje, ako využiť atribút random_group.
Ak sa tento atribút použije, poradie otázok sa pri každom spustení prieskumu náhodne zmení. Po spustení prieskumu však zostane poradie nezmenené, a to aj vtedy, ak zmeníte jazyk.
Snímky obrazovky
Pozrime sa spoločne na nasledujúci príklad. Prvá náhodná otázka na stránke bude Q1, Q4 alebo Q7. Druhá náhodná otázka na stránke bude Q2, Q5 alebo Q8.

Toto je náhodné poradie vygenerované pri prvom testovaní tohto prieskumu.

Pri druhom testovaní prieskumu sa vygenerovalo iné náhodné poradie.

Keď som však prepol na francúzštinu (bez opätovného spustenia prieskumu), poradie zostalo zachované.

Stiahnutie
Ak si chcete stiahnuť uvedený príklad, kliknite na nasledujúci odkaz: Randomization_Group_Test.lss
Náhodné zobrazenie jednej otázky v skupine
Prehľad
Tento prieskum ukazuje, ako nastaviť prieskum tak, aby sa z každej skupiny náhodne zobrazila jedna otázka. Obsahuje 5 skupín po 6 otázok. Na začiatku, v skupine 0, je vyplnených päť skrytých otázok typu Rovnica s názvami ask1-ask5. Každá z nich má v poli Text otázky hodnotu {floor(rand(1,6.9999))}, čo znamená, že premenné ask1-ask5 budú mať každá hodnotu od 1 do 6. Potom má každá otázka v skupine rovnicu relevantnosti, napríklad „ask1==N“, kde N je poradové číslo otázky v skupine (tretia otázka v skupine 1 teda má rovnicu relevantnosti „ask1==3“).
Tento prieskum funguje rovnako dobre v režimoch celý prieskum naraz, skupina po skupine aj otázka po otázke. Keďže náhodný výber sa nastaví v prvej skupine a táto skupina je v skutočnosti skrytá (všetky otázky ask1-ask5 sú skryté), náhodný výber zostane pre respondenta rovnaký; každý respondent však bude mať iný náhodný výber.
Predvádzané funkcie
- Typ otázky Rovnica
- Funkcie náhodného výberu
- Podmienená funkcia (if)
Snímky obrazovky
Toto je skupina Group0, ktorá využíva typ otázky Rovnica na výber náhodných hodnôt od 1 do 6 pre každú skupinu (okrem poslednej skupiny, ktorá má iba 4 otázky). Všimnite si, že funkcia „if()“ najprv skontroluje, či už bola premenná ask1 nastavená, a ak áno, použije túto hodnotu. Ak hodnota nastavená nebola, použije náhodnú hodnotu na nastavenie premennej ask1.

Táto skupina ukazuje, ako sa premenná (ask4) zo skupiny Group0 používa na určenie, ktorá otázka bude viditeľná vo štvrtej skupine.

Stiahnutie
Ak si chcete stiahnuť vyššie uvedený ukážkový prieskum, kliknite sem: Ukážkový prieskum s náhodnými otázkami v rámci skupiny.
Náhodné zobrazenie určitého počtu otázok v skupine (podmnožina otázok)
Prehľad
Tento prieskum ukazuje, ako zobraziť náhodnú podmnožinu otázok v skupine. Napríklad zobrazenie 5 náhodných otázok z 10 otázok nachádzajúcich sa v jednej skupine.
Prieskum obsahuje jednu skupinu s 10 otázkami. Všetkým otázkam je priradený rovnaký názov skupiny, v ktorej bude otázka náhodne zaradená. Vďaka tomu sa pri načítaní strany zobrazia v náhodnom poradí. Každá otázka má rovnicu relevantnosti, podľa ktorej musí byť súčet hodnôt „relevanceStatus“ všetkých ostatných otázok v skupine menší ako počet otázok, ktoré chcete zobraziť. Keďže hodnota relevanceStatus sa priraďuje pri vykresľovaní otázok, v konečnom dôsledku to dáva súčet predchádzajúcich otázok.
Takže v našom príklade 5 z 10 by rovnica pre Q1 bola:
sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5
Pre Q2 by bola:
sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5
A tak ďalej...
Ukázané funkcie
Stiahnutie
Ak si chcete stiahnuť vyššie uvedený príklad, kliknite na nasledujúci odkaz: Ukážkový prieskum Náhodných 5 z 10.
Hodnotenie zoznamu produktov zadaného používateľom
Prehľad
Nižšie uvedený príklad ukazuje, ako môžete používateľov požiadať, aby vypísali súbor produktov, ktoré ich zaujímajú, a následne ich nechať tieto produkty ohodnotiť.
Ukázané funkcie EM
- Prispôsobenie odpovedí - pri hodnotení produktov pochádzajú popisky z poľa komentára predchádzajúcej otázky s možnosťou výberu viacerých možností
- Prispôsobenie škál - mnohé pokročilé možnosti otázok, ako sú nadpisy škál, sa dajú tiež prispôsobiť.
Snímky obrazovky
Tento obrázok ukazuje, že hoci boli vybrané iba produkty 1, 3 a 5, zobrazia sa len tieto 3 (pomocou atribútu array_filter). Popisky riadkov v druhej otázke sú navyše buď čísla produktov (ak sa do poľa komentára nič nezadá), alebo obsah polí komentárov.

Tento obrázok ukazuje, ako sa zadávajú prispôsobené odpovede:

Tu je súbor Show Logic File pre túto otázku, ktorý nám umožňuje overiť, či podmienená logika funguje podľa očakávania (napr. či neobsahuje syntaktické chyby):

Nasledujúci obrázok ukazuje skupinu, v ktorej zadávate 5-bodovú hodnotiacu škálu (možnosti 1-5), názov škály a produkty, ktoré chcete ohodnotiť. Posledná otázka ukazuje, že každú časť otázky typu pole je možné prispôsobiť:

Nasledujúci obrázok zobrazuje pohľad na súbor logiky poslednej otázky. Ako môžete vidieť, podotázky, odpovede a hlavičky škál je možné prispôsobiť.

Stiahnutie
Ak si chcete stiahnuť vyššie uvedený príklad prieskumu, kliknite na nasledujúci odkaz: Príklad prieskumu hodnotenia zoznamu produktov zadaného používateľom.