Kontrola logiky prieskumu - Rozšírené
From LimeSurvey Manual
Všeobecne
Dôležitou možnosťou, ktorá vám pomáha vytvárať a jednoducho udržiavať zložité prieskumy, je Skontrolovať logiku prieskumu.
Počas vývoja a testovania prieskumu a pred jeho aktiváciou je veľmi dôležité overiť logiku prieskumu. Platí to najmä vtedy, keď používate zložité rovnice relevantnosti, prispôsobenia a validácie - musíte si byť istí, že sa pri spustení prieskumu nič nepokazí.
Táto funkcia vám umožňuje rýchlo overiť správnosť vášho prieskumu, skupiny (skupín) a otázky (otázok). Je dostupná z ponuky na hornej lište v časti nastavení súvisiacich s prieskumom. Nájdete ju v ponuke Nástroje:
Ako vidíte vyššie, túto možnosť môžete spustiť štyrikrát, pre každý jazyk použitý v prieskume.
Popis
Možnosť Skontrolovať logiku prieskumu zobrazuje všetko, čo ste zadali pre každú otázku a skupinu (napr. názov, text, pomoc, podmienky/relevantnosť, pravidlá validácie, predvolené hodnoty, podotázky, odpovede) v prehľadnom tabuľkovom formáte. Zvýrazňuje chyby a umožňuje kliknúť na ID otázok a skupín (alebo na premenné použité vo výrazoch), čím sa v nových kartách prehliadača otvorí úprava týchto otázok alebo skupín. Vďaka tomu môžete rýchlo upraviť akékoľvek chyby a obnoviť stránku kontroly logiky, aby ste pred aktiváciou potvrdili správnosť prieskumu.
Zobrazenie je navrhnuté aj tak, aby bolo čitateľné pre výskumníkov a sponzorov štúdie, aby mohli overiť správnosť dizajnu a logiky prieskumu. Kontrola logiky prieskumu aktualizuje vyrovnávaciu pamäť pre všetky výrazy použité v aktívnom prieskume.
Obsahuje nasledujúce stĺpce:
- # - zobrazuje poradové čísla skupín a otázok, počnúc od 0.
- Názov [ID] - zobrazuje kód otázky pre skupinu/otázku/podotázku. Tieto kódy sa dajú používať ako premenné vo výrazoch. ID je ID otázky (QID) alebo ID skupiny (GID). V tomto poli sa zobrazuje aj typ otázky (napr. Možnosť výberu viacerých možností [M]).
- Relevancia [Validácia] (Východisková) - zobrazuje nasledovné:
- Relevancia - syntakticky zvýraznená rovnica relevantnosti pre otázku alebo skupinu. Ak je vždy pravdivá (zobrazí sa v každom scenári), hodnota bude 1.
- Validácia - ExpressionScript automaticky generuje rovnicu validácie na základe vybraných atribútov otázky (napr. min./max. počet odpovedí, min./max./rovné hodnoty súčtu, min./max. jednotlivé hodnoty alebo validácia regulárnym výrazom). Táto časť zobrazuje vygenerovanú rovnicu validácie, aby ste mohli odhaliť prípadné chyby (napríklad nedefinované premenné).
- Validácia na úrovni otázky zobrazuje rovnicu potrebnú na overenie vyššie popísaných atribútov otázky
- Validácia na úrovni podotázky zobrazuje rovnicu potrebnú na implementáciu array_filter, array_filter_exclude a exclusive_option
- Východisková - ak má otázka predvolenú hodnotu, zobrazí sa tu syntakticky zvýraznená (keďže predvolená hodnota môže byť výraz).
- Text [Pomoc] (Tip) - zobrazuje nasledovné:
- Text - text skupiny, otázky, podotázky alebo odpovede. Je syntakticky zvýraznený, aby zobrazil všetky vložené prispôsobenia, čím vám umožní overiť, že ste deklarovali všetky premenné, ktoré plánujete v prispôsobení použiť.
- Pomoc - zobrazuje pomocný text otázky, tiež syntakticky zvýraznený.
- Tip - zobrazuje interne vygenerovaný tip k validácii na základe atribútov otázky. Rovnaký tip sa používa vo všetkých štýloch prieskumu, ako aj v tlačiteľnom prieskume a na obrazovkách dátového vstupu.
- Atribúty otázky - zobrazuje tabuľku všetkých relevantných atribútov tejto otázky. Atribúty, ktoré môžu byť rovnicami, sú syntakticky zvýraznené, aby ste mohli overiť ich správnosť.
Riadky sú farebne odlíšené takto:
- Skupiny - zobrazené so svetlosivým pozadím
- Otázky - zobrazené so svetlozeleným pozadím
- Podotázky - zobrazené s bledožltým pozadím
- Odpovede - zobrazené s obyčajným bielym pozadím
Odpovede majú v stĺpci Relevancia ďalší atribút:
- Hodnota - je to predvolená interná hodnota používaná vo výpočtoch. Ak používate hodnotenie, bude to hodnota hodnotenia. Inak bude rovnaká ako názov odpovede.
Použitie
V hornej časti stránky sa nachádza súhrnná správa. Ak je všetko v poriadku, bude v nej uvedené „V tomto prieskume neboli nájdené žiadne syntaktické chyby“, alebo „Táto skupina“ či „Táto otázka“ „sama o sebe neobsahuje žiadne syntaktické chyby“. Ak je to naopak, zobrazí sa „X otázok má syntaktické chyby, ktoré je potrebné opraviť“.
Každá otázka so syntaktickými chybami má pozadie svojho úplne ľavého stĺpca (t. j. #) označené červenou farbou. Pod stĺpcom Názov [ID] sa tiež zobrazí upozornenie s minimálnym počtom chýb danej otázky. Najčastejšie sa vyskytujú tieto chyby:
- Nedefinovaná premenná - ak ste nedefinovali všetky svoje premenné alebo ste preklepli array_filter (alebo máte rôzne sady možností odpovede pre array_filter), niektoré z vašich otázok s validáciou zobrazia chyby. Nedefinované premenné sú zobrazené červeným textom v červenom rámčeku.
- Nesprávna syntax - keď začnete používať rovnice relevantnosti, môžete použiť priveľa alebo primálo zátvoriek. Takéto syntaktické problémy sú zvýraznené a orámované červenou farbou. Ak nad takýto červeno orámovaný text umiestnite kurzor myši, popis chyby sa zobrazí v bublinovej nápovede.
Farby v syntaxi ExpressionScript
Podmienky a rovnice sú syntakticky zvýraznené, aby ste ľahšie zistili, na čo sa pozeráte:
- Zelená / svetlomodrá: premenná odkazujúca na otázku skôr v prieskume
- Modrá: funkcia
- Sivá: reťazcový výraz
- Hnedá: výraz TOKEN (údaje respondenta)
- Čierna: operátor
Čo skontrolovať:
- Fialová: premenná odkazujúca na otázku neskôr v prieskume. Zvyčajne ide o chybu, ktorú treba skontrolovať.
- Červená alebo červený rámček: neexistujúca premenná alebo odkaz na skoršiu otázku, prípadne syntaktická chyba - zvyčajne treba skontrolovať.
Nedefinované premenné
Ak sa použijú nedefinované premenné, príslušný názov premennej bude zvýraznený červenou farbou a orámovaný červenou čiarou. Ak nad názov premennej umiestnite kurzor myši, zobrazí sa „nedefinovaná premenná“:


}}
Nesprávna syntax
Väčšina chýb súvisiacich s výrazmi pramení z nesprávnej syntaxe. Správcovia prieskumov totiž často zabudnú pridať množinovú zátvorku, správne použiť zátvorky alebo použijú výrazy nesprávne:


Tu nájdete mnoho dobrých príkladov použitia zvýrazňovania syntaxe.
Nesprávny vlastný JavaScript
Chyby v JavaScripte sa tiež zvýraznia pri kontrole logiky prieskumu:

Rýchlejšie úpravy a validácia
Všetky texty so zvýraznenou syntaxou majú vložené popisky, na ktoré je možné kliknúť:
- Popisky
- Funkcie - po nastavení kurzora myši si môžete pozrieť účel a definíciu syntaxe funkcie;
- Názvy premenných - po nastavení kurzora myši si môžete pozrieť pozíciu (skupina, poradie otázky), text otázky a povolené odpovede na otázku.
- Akcie
- Názvy premenných - kliknutím na názov premennej sa otvorí nové okno, v ktorom môžete upraviť otázku. Vďaka tomu je jednoduché prechádzať a overovať logiku - stačí neustále klikať na názvy premenných v relevantnosti alebo validačných kritériách otázky a zistíte, odkiaľ pochádzajú a ako sa používajú.
Príklady
Nasledujúce príklady pochádzajú z ukážkových prieskumov ExpressionScript. Na tejto stránke nájdete snímky obrazovky spustených prieskumov, vysvetlenia a súbory na stiahnutie.
Index telesnej hmotnosti
Tu sú snímky obrazovky tohto príkladu.
Toto je zobrazenie zmeny poradia otázok pre výpočet indexu telesnej hmotnosti. V stĺpci Otázka vidíte rovnice relevantnosti pre hmotnosť, výšku a BMI:

Pre lepší prehľad prieskumu skontrolujte stránku logiky prieskumu:

Tento príklad prieskumu je zároveň dobrým príkladom vnorených príkazov if() na vytvorenie premennej "weightstatus".

Kaskádová logika
Tu sú snímky obrazovky tohto príkladu.
Zobrazuje validačnú logiku podotázok, ktorá sa vygeneruje automaticky pri použití array_filter a array_filter_exclude. Tento príklad tiež ukazuje, ako môžete nahradiť upravenú hodnotu "Iné" (odpoveď pre Q02_other je Q01_other).

Q05 v tomto príklade ukazuje súčasné použitie array_filter a array_filter_exclude na Q01 a Q02. Tento príklad predvádza možnosti kaskádového array_filter. Upozorňujeme, že jedným z hlavných dôvodov zobrazenia validačných kritérií na úrovni otázky a podotázky je pomôcť vám zistiť, či ste sa nepomýlili pri zadávaní názvov premenných array_filter alebo array_filter_exclude (alebo ak používate rôzne názvy premenných pre zoznam filtrovaných podotázok). Ak sa takéto preklepy vyskytnú, všetky neplatné názvy premenných sa zobrazia červenou farbou ako nedefinované, vďaka čomu problém rýchlo opravíte.

Dynamická relevantnosť
Tento príklad predvádza dynamickú kaskádovú logiku relevantnosti na riadenie viditeľnosti otázok. Tento príklad si môžete stiahnuť tu.
Všimnite si tiež, že otázky sa zobrazia, iba ak sú splnené určité validačné kritériá. Ak napríklad osoba uvedie, že má 2 deti, respondent musí vyplniť určité otázky (kid1 a kid2).

Relevantnosť na úrovni skupiny
Tento príklad ukazuje, ako sa relevantnosť na úrovni skupiny zobrazuje v kontrole logiky. Tu sú snímky obrazovky príkladu opísaného nižšie.
Ako vidíte, rovnica relevantnosti na úrovni skupiny (cohabs > 1 && p1_rel != "") sa zobrazuje v sivom riadku Person 2 pre G-2.
Môžete si tiež všimnúť, že všetky otázky sú povinné. Ak však skupina nie je relevantná, nie sú relevantné ani všetky jej otázky. Preto sú tieto otázky skutočne povinné, iba ak je skupina relevantná.
Môžete si tiež všimnúť, že niektoré otázky sa zobrazia, iba ak odpoveď na predchádzajúcu otázku nie je prázdna. Nižšie vidíte, že ak p2_sex nie je vyplnená, p2_name sa nezobrazí, hoci ide o povinnú otázku. Povinná otázka p2_age sa tiež nezobrazí, ak p2_name nie je vyplnená. Tieto otázky možno považovať za „podmienene povinné“.
Okrem toho si všimnite, že správy tip sa tiež vytvárajú automaticky. Sú usporiadané podľa rozsahu hodnôt (min/max), rozsahu súčtu hodnôt (min/max/rovná sa), počtu odpovedí (min/max) atď. (závisí to od použitého typu otázky a aktívnych atribútov). Niekedy chcete overiť rozsah odpovede, ale nechcete používateľovi zobrazovať tipy na validáciu, ktoré môžu pôsobiť zbytočne. V takom prípade môžete použiť možnosť otázky hide_tip (ako v tomto prípade, aby sa používateľovi nezobrazilo, že vek musí byť medzi 0 a 115, kým sa nepokúsi zadať nesprávnu hodnotu - pozrite p2_age).

Čiarka ako desatinný oddeľovač
Hoci LimeSurvey plne podporuje použitie čiarky ako desatinného oddeľovača počas vypĺňania, pri návrhu (napr. pri zadávaní min/max hodnôt v rozšírených atribútoch otázky) musíte stále používať desatinnú bodku. Funkčný príklad nájdete tu.
Pamätajte tiež, že logika validácie sa vytvára automaticky zo zapnutých atribútov otázky. Rovnice môžu vyzerať ohromujúco, ale nemusíte sa nimi zaoberať.

