x

Hlavné kapitoly

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. Rýchly sprievodca - LimeSurvey 3.0+
  3. Inštalácia - LimeSurvey CE
  4. Ako vytvoriť dobrý prieskum (príručka)
  5. Začíname
  6. Správa LimeSurvey
  7. Prieskumy - úvod
  8. Nastavenia prieskumu
  9. Menu prieskumu
  10. Štruktúra prieskumu
  11. Otázky – úvod
  12. Skupiny otázok - úvod
  13. Prieskumy - správa
  14. Možnosti panela nástrojov prieskumu
  15. Viacjazyčný prieskum
  16. ExpressionScript Engine - Príručka rýchleho štartu
  17. Nezaradené a pokročilé funkcie
  18. Všeobecné časté otázky
  19. Riešenie problémov
  20. Riešenia a obchádzky
  21. Licencia
  22. Záznam zmien verzií
  23. Doplnky
 Actions

Príklady ExpressionScript

From LimeSurvey Manual

Táto stránka mohla byť preložená strojovo a môže obsahovať chyby. Zobraziť anglický originál · Vylepšiť tento preklad
This page is a translated version of the page ExpressionScript examples and the translation is 100% complete.
Pomôžte nám rozšíriť tento článok pridaním vlastných príkladov. Pomôže to ostatným pri prvých krokoch s Expression Script.


Štruktúra

Prvá časť článku popisuje, na čo možno výrazy používať a kde ich nájsť alebo pridať. Druhá časť obsahuje príklady použitia výrazov.


Kategórie výrazov

LimeSurvey používa výrazy na tieto účely:


Relevancia

Účel: Skrývanie skupín otázok/otázok

Relevantnosť určuje, či sa skupina otázok alebo otázka zobrazí, alebo skryje. Ak je výsledok výrazu „true“ (t. j. 1), prvok sa zobrazí. V opačnom prípade (ak je výsledok výrazu „false“, t. j. 0) bude prvok skrytý.

Typ Zobrazuje/skrýva Kde nájsť Snímka obrazovky
Relevantnosť skupiny otázok skupina otázok Vytvoriť/Upraviť skupinu otázok -> "Rovnica relevantnosti:"
Relevantnosť otázky otázka Vytvoriť/Upraviť otázku -> "Rovnica relevantnosti:"
Relevantnosť podotázky podotázka Upraviť pod-otázky -> "Rovnica relevantnosti:"


Validácia

Účel: Validácia vstupov/akcií pri otázkach/podotázkach/odpovediach

Validácia určuje, či je vstup respondenta do otázky alebo akcia platná, alebo nie. Ak je výsledok výrazu „true“ (t. j. 1), na prvok a validačnú správu sa použije trieda „good“. V opačnom prípade, ak je výsledok výrazu „false“ (t. j. 0), na prvok a validačnú správu sa použije trieda „error“. Štýl pre tieto triedy môžete definovať v súbore template.css.

Typ Validuje Kde nájsť Snímka obrazovky
Validácia otázky otázka Vytvoriť/Upraviť otázku -> "Karta Logika" -> "Rovnica na overenie otázky"
Validácia podotázky podotázky Vytvoriť/Upraviť otázku -> "Karta Logika" -> "Rovnica overenia podotázky" ‎

Textový výstup

Účely: (Niečo vykonať) a vypísať nejaký text

Výraz možno použiť na vypísanie textu. Môžete napríklad niečo otestovať alebo vypočítať a podľa výsledku testu či výpočtu určiť výstup. Možno ho použiť aj na vloženie textu otázky, odpovedí, typov otázok atď. otázky, ktorá bola použitá pred výrazom. Textový výstup možno použiť všade, kde sa zobrazuje text, a môže vracať akýkoľvek druh výsledkov.

Prípad použitia Popis
Mikroprispôsobenie Úprava textu, napr. napísať „pán“ alebo „pani“ podľa predtým položenej otázky na pohlavie
Výpočet Vypočítať hodnotu a vypísať ju, napr. „Príjem vašej rodiny je xxx“
Odkaz Vložiť text z prvku, napr. „Vaše meno je xxx. Koľko máte rokov?“


Ukladanie odpovedí

Účely: (Niečo vykonať,) (vypísať nejaký text) a uložiť niečo do databázy

Typ otázky Rovnica možno použiť na uloženie údajov do databázy. Pomocou výrazu môžete niečo vykonať, zobraziť otázku typu Rovnica (ktorá je podobná zobrazeniu textu) a uložiť výsledok výrazu do databázy. Odpoveď sa uloží do tabuľky odpovedí. Výsledok potom možno použiť vo funkcii štatistík alebo ho možno importovať do jedného z formátov, ktoré poskytuje funkcia exportu LimeSurvey.

Príklady výrazov

Vloženie odpovede z predchádzajúcej otázky

Účel Vloženie odpovede z predchádzajúcej otázky
Typ Odkaz
Príklad Prvá otázka (kód otázky „Q00“): V akom meste bývate?
Druhá otázka (kód otázky „Q01“): Ako dlho bývate v MESTE?
Úloha: Odpoveď z prvej otázky sa má použiť namiesto „MESTO“ v druhej otázke.
Výraz {QOO}
Popis Odpoveď zadaná v Q00 nahradí pole Q00 v druhej otázke
Kroky Vytvorte/upravte druhú otázku
Do poľa textu otázky vložte „Ako dlho bývate v {QOO} (roky)?“

Použitie skrytej otázky typu rovnica na automatické vyplnenie odpovede

Problém: Predstavte si, že máte dve otázky Q1 a Q2. Q1 sa pýta respondentov na vek. Q2 rozdeľuje respondentov do troch skupín: vek je pod 20 rokov, vek je 20, vek je viac ako 20. Q2 teda má používať hodnoty „1“, „2“, „3“, ktoré zodpovedajú uvedeným podmienkam. Nesmieme tiež zabudnúť Q2 skryť (otázka sa v prieskume nezobrazí, ale hodnoty sa uložia „procesom na pozadí“ do tabuľky odpovedí).

Vyplnenie databázy pomocou typu otázky Rovnica:

  • Najprv vytvorte otázku s kódom Q1 ako otázku s číselným vstupom.
  • Potom vytvorte ďalšiu otázku s kódom Q2 ako otázku typu rovnica.
  • Na karte „Nastavenia zobrazenia“ otázky Q2:
    • nastavte pole „Vždy skryť túto otázku“ na „Zapnuté“
    • do poľa „Rovnica“ zadajte výraz:
{if(Q1.NAOK < 20, "1", if(Q1.NAOK > 20, "3", "2"))}

Vytvorenie súhrnnej stránky pomocou zástupných symbolov

Tento návod ukazuje, ako môžete na konci prieskumu vytvoriť prehľad, ktorý zobrazí všetky otázky a odpovede pomocou zástupných symbolov ExpressionScript. Ukazuje tiež, ako takýto prehľad obmedziť len na zodpovedané otázky.

Náš príklad si môžete stiahnuť tu: Príklad prieskumu so zástupnými znakmi.


Tu použité typy otázok:

1. Otázky s jednou odpoveďou / jednoduché textové/číselné otázky

  • Rozbaľovací zoznam
  • Zoznam (Radio) [L]
  • Áno/Nie [Y]
  • Dlhý text [T]
  • Krátky text [S]
  • Číselný vstup [N]
  • Rovnica [*]


2. Otázka s podotázkami

  • Viacnásobný krátky text [Q]
  • Možnosť výberu viacerých možností [M]
  • Pole [F]
  • Otázky s definovanou odpoveďou Áno/Nie/Neviem [C]
  • Pole (výber z 10 bodov) [B]


3. Otázky s 2 škálami

  • Otázky s dvoma škálami [1]


4. Otázky so škálami X a Y

  • Otázky s číselnou hodnotou z rozbaľovacieho poľa [:]


5. Základné typy otázok

  • Zobrazenie textu [X]


V tomto jednoduchom príklade bude náš prehľad jednoduchým zoznamom s:

- Text otázky: odpoveď používateľa


Otázky s možnosťou výberu len 1 odpovede / jednoduché textové/číselné otázky

Pre všetky tieto typy otázok uloží LimeSurvey jednu odpoveď:

  • Rozbaľovací zoznam
  • Zoznam (Radio)
  • Zoznam s komentárom
  • 5 možností
  • Áno/Nie
  • Krátky text
  • Dlhý text
  • Rozsiahle textové pole
  • Číselný vstup
  • Rovnica
  • Dátum
  • Pohlavie

Ak predpokladáme, že kód otázky je q1, na text otázky a odpoveď sa môžeme odkázať takto:

- {q1.question}: {q1.shown}

Príklad:

- Koľko máte rokov?: 25


Ak chcete overiť, či bola daná otázka zodpovedaná, môžete výstup obaliť príkazom IF:

{if(!is_empty(q1),join("- ",q1.question,": ",q1.shown),"")}

Toto sa „prekladá“ takto: AK otázka s kódom q1 nie je prázdna, vypíš „- “ A text otázky A „: “ A text odpovede (funkcia join() spája prvky do nového reťazca); INAK nevypíš nič ("" znamená prázdny reťazec).

Otázka s podotázkami

Pre všetky tieto typy otázok LimeSurvey používa podotázky:

  • Viacnásobný krátky text
  • Možnosť výberu viacerých možností
  • Možnosť výberu viacerých možností s komentárom
  • Pole
  • Pole (výber z 5 bodov)
  • Pole (výber z 10 bodov)
  • Otázky s definovanou odpoveďou Áno/Nie/Neviem
  • Otázky so škálou (Nárast/Bez zmeny/Pokles)
  • Pole podľa stĺpcov

Ak predpokladáme, že kód otázky je q2 a podotázky sú očíslované SQ001, SQ002, (automatické číslovanie vykonáva LimeSurvey), na text otázky a odpoveď sa môžeme odkázať takto:

- {q2_SQ001.question}: {q2_SQ001.shown}

- {q2_SQ002.question}: {q2_SQ002.shown}

Pri otázkach s možnosťou výberu viacerých odpovedí dáva zmysel nezobrazovať text zaškrtnutej podotázky, ale zobraziť Y pre každú vybranú možnosť:

- {q2_SQ001.question}: {q2_SQ001}

- {q2_SQ002.question}: {q2_SQ002}

...

Upozorňujeme, že momentálne nie je možné vypísať text otázky pri otázkach s podotázkami, pozrite si túto požiadavku na novú funkciu.


Príklad 1 (za predpokladu, že typ otázky je Možnosť výberu viacerých možností)

- Poznáte tieto automobilové značky?

-- Mercedes: Y

-- Audi: N

-- Volvo: Y


Ak chcete zobraziť iba označené položky, môžete výstup obaliť príkazom IF a skontrolovať hodnotu začiarkavacieho políčka:

{ if( q2_SQ001=="Y", join( "- ", q2_SQ001.question, ": ", q2_SQ001.shown ), "" ) }


Ak chcete zobraziť zoznam iba vybraných položiek, použite funkciu listifop, napr.: Mercedes, Volvo

{ listifop( 'value', '==', 'Y', 'question', ', ', that.q2.sgqa ) }


Kde  that.q2  zahŕňa všetky podotázky otázky q2. Viac informácií nájdete v časti self, this a that.


Príklad 2 (za predpokladu, že typ otázky je Pole (výber z 10 bodov))

- Ohodnoťte kvalitu nižšie uvedených automobilových značiek na škále od 1 = veľmi zlá po 10 = veľmi dobrá.

-- Mercedes: 7

-- Audi: 9

-- Volvo: 9


Ak chcete zobraziť iba ohodnotené položky, môžete výstup obaliť príkazom IF a pomocou nasledujúceho výrazu skontrolovať, či bola aktuálna podotázka zodpovedaná:

{ if( ! is_empty( q3_SQ001 ), join( "- ", q3_SQ001.question, ": ", q3_SQ001.shown ), "" ) }


Funkciu listifop použite, ak chcete napríklad zobraziť zoznam iba vybraných položiek s hodnotou väčšou než osem, napr.: Audi / Volvo

{ listifop( 'value', '>', 8, 'question', ' / ', that.q3.sgqa ) }


Otázka s dvoma škálami

Toto platí iba pre typ otázky s dvojitou škálou.


Predpokladajme, že sa používajú nasledujúce kódy:

  • Kód otázky: q4
  • Kódy podotázok: SQ001, SQ002, ...
  • Kódy odpovedí škála 1: A1, A2, ...
  • Kódy odpovedí škála 2: B1, B2, ...


Ak sa chcete odkázať na výsledok určitej podotázky na určitej škále, musíte použiť QuestionCode . '_' . SubQuestionCode . '_' . ScaleID. Upozornenie: „ScaleID“ je 0 pre prvú škálu a 1 pre druhú!
Príklad odkazu na odpoveď tretej podotázky a druhej škály: q4_SQ003_1 - otázka 4, podotázka 3, druhá škála.


Zobrazme výsledky pre obe škály a prvé dve podotázky:

- {q4_SQ001_0.question}: {q4_SQ001_0.shown} / {q4_SQ001_1.shown}

- {q4_SQ002_0.question}: {q4_SQ002_0.shown} / {q4_SQ002_1.shown}

Ak chcete zobraziť text podotázky, musíte do zástupného symbolu pridať ID škály (hoci texty sú pre obe škály rovnaké). Namiesto {q4_SQ001.question} teda musíme použiť {q4_SQ001_0.question} alebo {q4_SQ001_1.question}.

Ak chcete exportovať/zobraziť iba výsledky podotázok s aspoň jednou odpoveďou, použite pre každú podotázku túto syntax:

{if(count(q4_SQ001_0,q4_SQ001_1)>0,join("- ",q4_SQ001_0.question,": ",q4_SQ001_0.shown," / ",q4_SQ001_1.shown),"")}

Otázka so stupnicami X a Y

Platí pre všetky maticové otázky, ktoré umožňujú odpoveď v každej bunke (nielen v každom riadku, ako bolo uvedené vyššie):

  • Pole textov
  • Pole čísel


Predpokladané použité kódy:

  • Kód otázky: q5
  • Kódy podotázok: SQ001, SQ002, ...
  • Kódy odpovedí: A1, A2, ...

Ak chcete odkazovať na výsledok určitej podotázky z určitého stĺpca, musíte použiť QuestionCode . '_' . SubQuestionCode . '_' . AnswerCode. Príklad odkazu na odpoveď tretej podotázky a druhého stĺpca: q5_SQ003_A2.

Vypíšme výsledky pre stĺpce 1 – 3 prvých dvoch podotázok:

- {q5_SQ001_A1.question}: {q5_SQ001_A1.shown} | {q5_SQ001_A2.shown} | {q5_SQ001_A3.shown}

- {q5_SQ002_A1.question}: {q5_SQ002_A1.shown} | {q5_SQ002_A2.shown} | {q5_SQ002_A3.shown}


Keďže pri týchto typoch otázok každá bunka (kombinácia osi X a osi Y) zodpovedá jednej možnosti odpovede, kontrolu existujúcich údajov je potrebné urobiť pre každú bunku. Príklad:

{if(!is_empty(q5_SQ001_A1),join("- ",q5_SQ001_A1.question,": ",q5_SQ001_A1.shown),"")}


Ak chcete vypísať text podotázky, musíte do zástupného symbolu pridať kód odpovede (hoci texty sú pre všetky možnosti odpovede rovnaké). Takže namiesto {q5_SQ001.question} musíme použiť {q5_SQ001_A1.question} alebo {q5_SQ001_A2.question}.

Skrytie otázky, ak je odpoveď na predchádzajúcu otázku prázdna

Účel Skryť otázku, ak je odpoveď na predchádzajúcu otázku prázdna
Typ Relevantnosť otázky
Príklad Otázka jedna: kód otázky "name", text otázky "Ako sa voláte?"
Otázka dva: text otázky "{name}, koľko máte rokov?"
Úloha: Skryť otázku dva, ak je textové pole otázky jedna prázdne
Výraz !is_empty(name)
Popis is_empty() zisťuje, či sa premenná považuje za prázdnu. Znak "!" neguje výsledok. Ak teda premenná nie je prázdna, výraz bude pravdivý a otázka sa zobrazí
Postup Vytvorte/upravte otázku dva
Do poľa "Rovnica relevantnosti" vložte "!is_empty(name)"
Vzorový súbor Hide_question_if_empty_question_group.zip


Skrytie skupiny otázok, ak je odpoveď na predchádzajúcu otázku Áno alebo Nie

Účel Skryť skupinu otázok, ak je odpoveď na predchádzajúcu otázku Áno alebo Nie
Typ Relevantnosť skupiny otázok
Príklad Strana jedna, skupina otázok jedna, otázka jedna: kód otázky "PET", text otázky "Máte domáce zviera?" -Áno -Nie
Strana dva, skupina otázok dva: Názov "O vašich domácich zvieratách"
Úloha: Zobraziť/skryť skupinu otázok dva podľa toho, či je odpoveď na otázku jedna Áno/Nie
Výraz PET == "Y"
Popis PET je kód otázky, ktorej odpoveď chcete skontrolovať. Ak nepoužijete príponu, EM použije "Qcode.code". Porovnávate teda kód odpovede otázky PET s hodnotou "Y". Ak respondent odpovie "Áno", výraz bude pravdivý a skupina otázok "O vašich domácich zvieratách" sa zobrazí.
Postup Vytvorte/upravte skupinu otázok dva
Do poľa "Rovnica relevantnosti" vložte "PET == "Y""
Vzorový súbor Hide_question group_if_answer_from_previous_question_is_Yes_or_No.zip


Zobrazenie hodnoty poľa otázky s viacerými vstupmi odpovede

Účel Zobraziť hodnotu poľa otázky s viacerými vstupmi odpovede
Typ Odkaz
Príklad Otázka jedna: kód otázky "AskChildAge", text otázky "Koľko rokov majú vaše deti?". Kódy podotázok -Child1 -Child2 -Child3 - ChildXXX
Otázka dva: kód otázky "ReportChildAge", text otázky "O vašom prvom dieťati: - CHILD1 má AGE1 rokov."
Výraz {AskChildAge_Child1.question}, {AskChildAge_Child1.value}
Popis Chcete použiť hodnotu podotázky v nasledujúcej otázke. K hodnote podotázky získate prístup týmto typom výrazu: QcodeQuestion_QcodeSubquestion.value
Postup Vytvorte/upravte druhú otázku
Do popisu vložte tento text: "O vašom prvom dieťati: - {AskChildAge_Child1.question} má {AskChildAge_Child1.value} rokov."
Vzorový súbor Display_value_of_a_multiple_answer_input_question_field.zip

Overenie počtu začiarknutých políčok v riadku pri otázke "Pole (čísla) so začiarkavacími políčkami"

Účel Overiť počet začiarknutých políčok v riadku
Typ Validácia
Príklad Otázka typu "Pole čísel (rozloženie so začiarkavacími políčkami)"
Výraz sum(...)
Popis (sum(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= X) zisťuje, či je v riadku A začiarknutých najviac X políčok.
Ak chcete skontrolovať všetky tri riadky (A, B, C), môžete výraz spojiť pomocou "&&":
(sum(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= X)
&& (sum(Test_B_1, Test_B_2, Test_B_3, Test_B_4, Test_B_5) <= X)
&& (sum(Test_C_1, Test_C_2, Test_C_3, Test_C_4, Test_C_5) <= X)
Postup Vytvorte/upravte otázku typu "Pole čísel (rozloženie so začiarkavacími políčkami)".
Vložte vyššie uvedený výraz do poľa "Rovnica na overenie otázky" v rozšírených nastaveniach otázky (možno budete musieť upraviť názvy premenných!).
Vzorový súbor Validate number of boxes ticker per row for an Array (Numbers) Checkbox.lss

Výpočet rozdielu medzi dvoma dátumami

Účel Vypočítať rozdiel medzi dvoma dátumami
Typ Relevantnosť / typ otázky Rovnica / Validácia
Príklad Otázka jedna (dátum/čas, kód: DOB): Aký je váš dátum narodenia?
Otázka dva (dátum/čas, kód: datetoday): Aký je dnes dátum?
Otázka tri (boilerplate): Máte XXXX dní.
Úloha: Vypočítať a zobraziť počet dní medzi dátumom zadaným v otázke 1 a v otázke 2.
Výraz {(strtotime(datetoday)-strtotime(DOB))/60/60/24}
Popis strtotime vypočíta počet sekúnd medzi 1. januárom 1970 a zadaným dátumom. Vyššie uvedený výraz vypočíta počet sekúnd medzi dvoma zadanými dátumami. Člen "/60/60/24" jednoducho prevedie počet sekúnd na počet dní.
Namiesto zisťovania "datetoday" môžete použiť aj strtotime('now') alebo jednoducho time(), ktorá priamo vráti počet sekúnd od januára 1970 do súčasnosti (t. j. do času vypĺňania prieskumu). Vek osoby v rokoch tak môžete rýchlo zistiť pomocou rovnice {(time() - strtotime(DOB)) / 60 / 60 / 24 / 365.25} V každom z týchto prípadov je dôležité, aby bol dátum zadaný v správnom formáte, inak funkcia strtotime() nebude fungovať správne.
Postup Vytvorte dve otázky s dátumom (pre dátum narodenia a pre dnešný dátum) a jednu boilerplate otázku.
Do textu otázky boilerplate otázky vložte: "Dňa {datetoday} ste mali {(strtotime(today)-strtotime(dob))/60/60/24} dní."

Upozornenie: Funkcia strtotime dokáže pracovať s MNOHÝMI, ale nie so všetkými formátmi dátumu. Ak narazíte na problémy, nastavte formát dátumu v prieskume na mm/dd/yyyy alebo yyyy-mm-dd alebo dd.mm.yyyy"
Vzorový súbor Date_difference.zip

Použitie ExpressionScript pre hodnotenia

Tu je ďalší príklad použitia ExpressionScript s otázkami typu pole a hodnoteniami:</ br>

Povedzme, že máte 2 otázky typu pole a chcete uložiť výsledky výpočtu do databázy. Je to vlastne jednoduché: vytvorte a otestujte svoje polia a odošlite testovaciu odpoveď, aby ste zistili, či to funguje a či sa výsledky zobrazia na stránke dokončenia.


Podrobnosti implementácie:

  • pridajte otázku typu rovnica
  • pridajte nasledujúci riadok za predpokladu, že Q1 je kód vašej otázky typu pole a Q2 je kód druhej:
    • {sum(Q1_SQ001.value,Q2_SQ001.value)}

Upozorňujeme, že SQ001 je predvolený kód každej podotázky. Ak zmeníte kód podotázky, upravte vyššie uvedenú rovnicu zodpovedajúcim spôsobom.


Použitie em_validation_q v poli

Pomocou rovnice na overenie otázky môžete ovládať pole podľa ľubovoľnej podmienky.


Podrobnosti implementácie:

  • pre prvé pole: pole s jednou voľbou
    • Kód otázky je ARRAY
    • Kódy podotázok sú SQ01,SQ02,SQ03 a SQ04
    • upravte rovnicu na overenie celej otázky a zadajte
      !is_empty(ARRAY_SQ01) and !is_empty(ARRAY_SQ03) 
  • pre druhé pole: pole textov
    • Kód otázky je ARRAYTEXT
    • Kódy podotázok na osi Y sú SY01,SY02,SY03 a SY04
    • Upravte rovnicu na overenie celej otázky a zadajte
      count(self.sq_SY01 >= 1) and count(self.sq_SY03 >= 3)