ExpressionScript Engine - Príručka rýchleho štartu
From LimeSurvey Manual
Príručka rýchleho štartu
V systéme LimeSurvey môžete svoje prieskumy ďalej prispôsobiť pomocou ExpressionScript (skratka: ES). Poznámka: „ExpressionScript sa v starších verziách nazýval Expression Manager (EM). Ak sa niekde stretnete s názvom Expression Manager, ide len o starý názov ES.“
Pomocou ES môžete určiť nasledovné:
- Navigácia/vetvenie - umožňuje, aby odpovede respondenta zmenili poradie, v akom sa otázky zobrazujú;
- Prispôsobenie/prenášanie hodnôt (tailoring/piping) - pomáha formulovať otázku (napríklad odkazom na predchádzajúce odpovede alebo skloňovaním viet podľa veku alebo pohlavia vašich respondentov) alebo vytvárať vlastné správy (ako hodnotenie skóre alebo poradenstvo na mieru);
- Validácia - zabezpečuje, aby odpovede spĺňali určité kritériá, napríklad minimálne a maximálne hodnoty alebo určitý vzor vstupu.
ES poskytuje intuitívny spôsob, ako určiť logiku pre každú z týchto funkcií. Platným výrazom je takmer všetko, čo možno zapísať ako štandardnú matematickú rovnicu.
ES momentálne poskytuje prístup k 70 funkciám a možno ho jednoducho rozšíriť o ďalšie. Takisto vám umožňuje pristupovať k vašim premenným pomocou ľudsky čitateľných názvov premenných (namiesto názvov SGQA).
Nasledujúce časti ukazujú hlavné miesta, kde sa ES používa.
Niektoré prieskumy používajú „Goto Logic“, pri ktorej ste napríklad po odpovedi na Otázku1 možnosťou C presmerovaní na Otázku5. Tento prístup je veľmi obmedzený, pretože je ťažké ho validovať. Navyše sa ľahko pokazí, keď musíte zmeniť poradie otázok. ES naopak používa booleovské rovnice relevantnosti na určenie všetkých podmienok, za ktorých môže byť otázka platná. Ak je otázka relevantná, zobrazí sa; v opačnom prípade sa nepoužije a do databázy sa uloží hodnota „NULL“.
Aby ste lepšie pochopili pojem relevantnosti, zamerajme sa na nasledujúci prieskum, ktorý počíta index telesnej hmotnosti (BMI) respondentov. Stiahnete ho kliknutím na nasledujúci odkaz: Ukážkový prieskum Index telesnej hmotnosti.
Rovnica relevantnosti je zobrazená nižšie v stĺpci Relevancia za názvom premennej. Hodnoty relevantnosti pre weight, weight_units, height a height_units sú všetky 1 (predvolená hodnota), čo znamená, že tieto otázky sa zobrazujú vždy. Relevantnosť pre BMI je však {!is_empty(height) and !is_empty(weight)}, čo znamená, že BMI sa vypočíta, len ak respondent zadá hodnotu pre výšku aj hmotnosť (čím sa zabráni riziku chyby delenia nulou). Otázka „Report“ sa tiež zobrazí, len ak respondent odpovie na všetky štyri hlavné otázky (height, heightunits, weight, weightunits).

Relevancia sa zobrazuje a dá sa upravovať, keď:
- chcete zobraziť/upraviť relevantnosť na úrovni otázky
- chcete zobraziť/upraviť relevantnosť na úrovni skupiny
Zobrazenie / úprava relevantnosti na úrovni otázky
Táto rovnica počíta index telesnej hmotnosti (BMI). Otázka sa položí, len ak osoba zadá svoju výšku a hmotnosť.

Toto je obrazovka úprav otázky „BMI“.

Upozorňujeme, že pri zadávaní rovnice relevantnosti sa nepoužívajú zložené zátvorky.
Zobrazenie / úprava relevantnosti na úrovni skupiny
Zamerajme sa teraz na ďalší príklad - jednoduchý sčítací prieskum. Stiahnete ho kliknutím na nasledujúci odkaz: Ukážkový sčítací prieskum.
Prvá stránka sa pýta, koľko ľudí s vami býva, a ukladá to do premennej „cohabs“. Táto stránka sa zobrazí, len ak máte viac ako jedného spolubbýjúceho (zobrazí sa pre druhú osobu, ktorá s vami býva). Takisto p2name, p2age a p2sum sa zobrazia, len ak otázka pred každou z nich obsahuje odpoveď.

Skupina má teda aj kritériá relevantnosti na úrovni otázok, takže niektoré otázky sa zobrazia, len ak ste predtým odpovedali na určité otázky (napr. p2age sa zobrazí, ak sa odpovedalo na p2name). ES za vás kombinuje relevantnosť na úrovni skupiny aj otázky. Otázky v skupine sa kladú, len ak je relevantná skupina ako celok. Potom sa kladú iba tie otázky v skupine, ktoré sú relevantné.
Tu je snímka obrazovky úpravy relevantnosti na úrovni skupiny pre Cohabitant 2:

Upozorňujeme, že pri zadávaní rovnice relevantnosti sa nepoužívajú zložené zátvorky.
Prispôsobenie/Piping
ES vám umožňuje jednoducho vytvárať jednoduché aj zložité podmienené prispôsobenie. Niekedy stačí jednoduchá substitúcia, napríklad: „Uviedli ste, že ste kúpili [Produkt]. Čo sa vám na ňom páčilo najviac?“. Inokedy potrebujete podmienenú substitúciu, napríklad „[Pán/Pani] [Priezvisko], boli by ste ochotní vyplniť náš prieskum?“. V takom prípade chcete použiť „Pán“ alebo „Pani“ podľa pohlavia osoby. Inokedy potrebujete ešte zložitejšiu substitúciu (napríklad na základe matematického výpočtu). ES podporuje všetky tieto typy prispôsobenia/pipingu.
Podmienené rovnice
Príklad s indexom telesnej hmotnosti (BMI) ukazuje možnosť vypočítať BMI osoby, a to aj vtedy, keď jej umožníte zadať výšku a hmotnosť v dvoch rôznych jednotkách (cm vs palce a kg vs libry):

V tomto prípade je weightkg {if(weightunits == "kg", weight, weight * 0.453592)}. Funkcia „if()“ znamená, že ak respondent zadá hmotnosť v kilogramoch, použije sa táto hodnota, v opačnom prípade (alternatívou sú libry) sa zadaná hodnota vynásobí číslom 0.453592, čím sa prevedie na kilogramy. Premenná heightm používa podobný postup na výpočet výšky osoby v metroch (výška v cm/100), aj keď zadala výšku v palcoch (1 meter = 3.28084 palca).
BMI sa vypočíta ako: {weightkg / (heightm * heightm)}.
Nakoniec správa s výsledkami podmienene prispôsobí text pre respondenta a oznámi mu, čo zadal. (napr. „Uviedli ste, že ste vysoký 2 metre a vážite 70 kg.“)
Na nasledujúcom obrázku premenná weightstatus používa vnorené príkazy „if()“ na zaradenie osoby od podváhy až po ťažkú obezitu. Jej rovnicu uvidíte, ak si pozriete jej logiku:

V okne úprav tejto otázky vidíte dve veci:
- Pri prispôsobení musia byť výrazy ohraničené zloženými zátvorkami
- Výrazy môžu zahŕňať viac riadkov, ak chcete, ako v tomto prípade, zlepšiť čitateľnosť vnorenej podmienenej logiky.

Prispôsobené otázky, odpovede a správy
Správa s BMI vyzerá takto:

Tu je okno úprav tej istej otázky.

Všetko v zložených zátvorkách sa považuje za výraz, ktorý je na predchádzajúcom obrázku zvýraznený (farebne odlíšený). Ak sa dopustíte preklepov (napríklad nesprávne napísané alebo nedefinované názvy premenných či funkcií), ES zobrazí chybu. V našom nasledujúcom príklade:
- heightunit.shown je nedefinovaný názov premennej (v skutočnosti je to heightunits.shown) a
- „rnd()“ je nedefinovaná funkcia (správny názov funkcie je „round()“).
V oboch prípadoch sú chyby označené červeným rámčekom, aby sa dali ľahšie nájsť a opraviť.

Vidíte tiež, že môžete rýchlo vytvárať zložité správy, napríklad tabuľku zadaných hodnôt alebo prispôsobené odporúčania.
Nezabudnite, že pri každom prispôsobení musia byť výrazy ohraničené zloženými zátvorkami, aby LimeSurvey vedel, ktoré časti otázky sú voľný text a ktoré má spracovať nástroj ExpressionScript.
Validácia
ES riadi fungovanie väčšiny rozšírených možností otázok. Tie ovplyvňujú napríklad minimálny/maximálny počet odpovedí, minimálne/maximálne jednotlivé hodnoty, minimálne/maximálne súčty hodnôt a kontrolu, či zadané hodnoty zodpovedajú určeným vzorom reťazcov. Každá hodnota v týchto poliach sa považuje za výraz, takže môžete mať kritériá minima/maxima so zložitými podmienenými väzbami na iné otázky.
Vo všetkých týchto prípadoch sa pri zadávaní nepoužívajú zložené zátvorky, pretože rozšírený atribút otázky sa vždy považuje za výraz.
Stránka ukážkové prieskumy obsahuje množstvo funkčných príkladov s rôznymi validačnými výrazmi.
ExpressionScript - prezentácia
Ak sa chcete dozvedieť viac o ExpressionScript a o tom, ako môžete pomocou rôznych výrazov vylepšiť svoj prieskum, kliknite na nasledujúci odkaz.