Kontrola logiky průzkumu - pokročilé
From LimeSurvey Manual
Obecné informace
Důležitou možností, která vám pomáhá vytvářet a snadno udržovat složité průzkumy, je Kontrola logiky průzkumu.
Během vývoje a testování průzkumu a před jeho aktivací je velmi důležité ověřit logiku průzkumu. Platí to zejména tehdy, když používáte složité rovnice relevance, přizpůsobení a ověření - musíte si být jisti, že se při spuštění průzkumu nic nerozbije.
Tato funkce vám umožňuje rychle ověřit správnost vašeho průzkumu, skupin a otázek. Je dostupná z možností v horní liště týkajících se nastavení průzkumu. Najdete ji v menu Nástroje:
Jak můžete vidět výše, tuto možnost můžete spustit pro každý jazyk použitý v průzkumu zvlášť.
Popis
Možnost Kontrola logiky průzkumu přehledně v tabulce zobrazí vše, co jste zadali pro každou otázku a skupinu (např. název, text, nápovědu, podmínky/relevanci, pravidla ověření, výchozí hodnoty, dílčí otázky, odpovědi). Zvýrazňuje chyby a umožňuje kliknout na ID otázek a skupin (nebo na proměnné použité v rovnicích), čímž se v nových kartách prohlížeče otevře úprava příslušných otázek nebo skupin. Díky tomu můžete snadno rychle opravit případné chyby a obnovit stránku kontroly logiky, abyste před aktivací potvrdili správnost průzkumu.
Zobrazení je také navrženo tak, aby bylo čitelné pro výzkumníky a zadavatele studií, kteří tak mohou ověřit správnost návrhu a logiky průzkumu. Kontrola logiky průzkumu aktualizuje mezipaměť všech výrazů použitých v aktivním průzkumu.
Obsahuje následující sloupce:
- # - zobrazuje pořadová čísla skupin a otázek počínaje 0.
- Jméno [ID] - zobrazuje kód otázky pro skupinu/otázku/dílčí otázku. Tyto kódy lze používat jako proměnné ve výrazech. ID je ID otázky (QID) nebo ID skupiny (GID). V tomto poli se také zobrazuje typ otázky (např. Vícenásobné možnosti [M]).
- Relevantnost [Potvrzení] (Výchozí) - zobrazuje následující:
- Relevantnost - rovnice relevance pro otázku nebo skupinu se zvýrazněnou syntaxí. Pokud je vždy pravdivá (zobrazí se v jakémkoli scénáři), bude hodnota 1.
- Potvrzení - ExpressionScript automaticky generuje rovnici ověření na základě vybraných atributů otázky (např. min./max. počet odpovědí, min./max./rovná se hodnoty součtu, min./max. jednotlivé hodnoty nebo ověření regulárním výrazem). Tato sekce zobrazuje vygenerovanou rovnici ověření, abyste mohli odhalit případné chyby (například nedefinované proměnné).
- Ověření na úrovni otázky zobrazuje rovnici potřebnou k ověření výše popsaných atributů otázky
- Ověření na úrovni dílčí otázky zobrazuje rovnici potřebnou k implementaci array_filter, array_filter_exclude a exclusive_option
- Výchozí - pokud má otázka výchozí hodnotu, zobrazí se zde se zvýrazněnou syntaxí (výchozí hodnota může být výraz).
- Text [Nápověda] (Tip) - zobrazuje následující:
- Text - text skupiny, otázky, dílčí otázky nebo odpovědi. Má zvýrazněnou syntaxi, aby bylo vidět případné vložené přizpůsobení, takže můžete ověřit, že jste deklarovali všechny proměnné, které plánujete v přizpůsobení použít.
- Nápověda - zobrazuje text nápovědy k otázce, rovněž se zvýrazněnou syntaxí.
- Tip - zobrazuje interně vygenerovaný tip k ověření na základě atributů otázky. Tentéž nápovědu používají všechny styly průzkumu, tisknutelný průzkum i obrazovky vstupu dat.
- Atributy otázky - zobrazuje tabulku všech relevantních atributů této otázky. Atributy, které mohou být rovnicemi, mají zvýrazněnou syntaxi, abyste mohli ověřit jejich správnost.
Řádky jsou barevně odlišeny takto:
- Skupiny - mají světle šedé pozadí
- Otázky - mají světle zelené pozadí
- Dílčí otázky - mají světle žluté pozadí
- Odpovědi - mají obyčejné bílé pozadí
Odpovědi mají ve sloupci Relevantnost další atribut:
- Hodnota - výchozí interní hodnota používaná při výpočtech. Pokud používáte hodnocení, bude to číselná hodnota hodnocení. Jinak bude stejná jako název odpovědi.
Použití
V horní části stránky se nachází souhrnná zpráva. Pokud je vše v pořádku, zobrazí se „V průzkumu nebyly nalezeny žádné chyby syntaxe“, nebo „Tato skupina“ či „Tato otázka“ „sama o sobě neobsahuje žádné chyby syntaxe“. V opačném případě se zobrazí „X otázek obsahuje chyby syntaxe, které je třeba opravit“.
Každá otázka, která obsahuje chyby syntaxe, má pozadí svého nejlevějšího sloupce (tj. #) zbarveno červeně. Pod sloupcem Jméno [ID] se navíc zobrazí varování uvádějící minimální počet chyb dané otázky. Běžné jsou následující chyby:
- Nedefinovaná proměnná - pokud jste nedefinovali všechny proměnné nebo jste udělali překlep v array_filter (či použili různé sady možností odpovědí pro array_filter), některé vaše otázky s ověřením zobrazí chyby. Nedefinované proměnné jsou zobrazeny červeným textem v červeném rámečku.
- Chybná syntaxe - když začnete používat rovnice relevance, můžete použít příliš mnoho nebo příliš málo závorek. Takové problémy se syntaxí jsou zvýrazněny a orámovány červeně. Když najedete myší na takto orámovaný text, popisek vysvětlí chybu.
Barvy v syntaxi ExpressScript
Podmínky a rovnice mají zvýrazněnou syntaxi, aby bylo snazší zjistit, na co se díváte:
- Zelená / světle modrá: proměnná odkazující na otázku dříve v průzkumu
- Modrá: funkce
- Šedá: řetězcový výraz
- Hnědá: výraz TOKEN (údaje o respondentovi)
- Černá: operátor
Co zkontrolovat:
- Fialová: proměnná odkazující na otázku později v průzkumu. Obvykle jde o chybu, kterou je třeba zkontrolovat.
- Červená nebo červený rámeček: neexistující proměnná nebo odkaz na dřívější otázku, nebo chyba syntaxe - obvykle je třeba to zkontrolovat.
Nedefinované proměnné
Pokud jsou použity nedefinované proměnné, bude příslušný název proměnné zbarven červeně a orámován červenou čarou. Když na název proměnné najedete myší, zobrazí se „Nedefinovaná proměnná“:


}}
Chybná syntaxe
Většina chyb souvisejících s výrazy je způsobena chybnou syntaxí. Správci průzkumů totiž často zapomenou přidat složenou závorku, nesprávně použijí závorky nebo výrazy použijí chybně:


Zde najdete mnoho dobrých příkladů použití zvýraznění syntaxe.
Chybný vlastní JavaScript
Chyby v JavaScriptu jsou při kontrole logiky průzkumu také zvýrazněny:

Rychlejší úpravy a ověřování
Veškerý text se zvýrazněnou syntaxí obsahuje vložené popisky, na které lze klikat:
- Popisky
- Funkce - po najetí myší se zobrazí účel a definice syntaxe funkce;
- Názvy proměnných - po najetí myší se zobrazí pozice (skupina, pořadí otázky), text otázky a povolené odpovědi na otázku.
- Akce
- Názvy proměnných - kliknutím na název proměnné se otevře nové okno, ve kterém můžete otázku upravit. Díky tomu se snadno orientujete v logice a ověřujete ji - stačí klikat na názvy proměnných v kritériích relevance nebo ověření otázky a uvidíte, odkud pocházejí a jak se používají.
Příklady
Následující příklady pocházejí z ukázkových průzkumů ExpressionScript. Na uvedené stránce najdete snímky obrazovky běžících průzkumů, vysvětlení i soubory ke stažení.
Index tělesné hmotnosti
Zde jsou snímky obrazovky tohoto příkladu.
Toto je zobrazení změny pořadí otázek pro výpočet indexu tělesné hmotnosti. Relevanční výrazy pro hmotnost, výšku a BMI vidíte ve sloupci Otázka:

Pro lepší přehled o průzkumu se podívejte na stránku kontroly logiky průzkumu:

Tento příklad průzkumu je také dobrou ukázkou vnořených příkazů if() pro vytvoření hodnoty "weightstatus".

Kaskádová logika
Zde jsou snímky obrazovky tohoto příkladu.
Ukazuje logiku ověření dílčích otázek, která se automaticky vytváří při použití array_filter a array_filter_exclude. Tento příklad také ukazuje, jak lze nahradit přizpůsobenou hodnotu "Jiné" (odpověď pro Q02_other je Q01_other).

Q05 v tomto příkladu ukazuje souběžné použití array_filter a array_filter_exclude na Q01, respektive Q02. Příklad předvádí možnosti kaskádového array_filter. Jedním z hlavních důvodů, proč se zobrazují kritéria ověření na úrovni otázek a dílčích otázek, je pomoci vám zajistit, že jste se nepřepsali při zadávání názvů proměnných array_filter nebo array_filter_exclude (nebo pokud pro seznam filtrovaných dílčích otázek používáte různé názvy proměnných). Pokud takové překlepy máte, všechny neplatné názvy proměnných se zobrazí červeně jako nedefinované, takže problém rychle opravíte.

Dynamická relevance
Tento příklad předvádí dynamickou kaskádovou logiku relevance pro řízení zobrazení otázek. Tento příklad si můžete stáhnout zde.
Všimněte si také, že otázky se zobrazí, pouze pokud jsou splněna určitá kritéria ověření. Pokud například osoba uvede, že má 2 děti, musí respondent vyplnit určité otázky (kid1 a kid2).

Relevance na úrovni skupiny
Tento příklad ukazuje, jak se relevance na úrovni skupiny zobrazuje při kontrole logiky. Zde jsou snímky obrazovky níže popsaného příkladu.
Jak vidíte, rovnice relevance na úrovni skupiny (cohabs > 1 && p1_rel != "") se zobrazuje v šedém řádku Person 2 u skupiny G-2.
Můžete si také všimnout, že všechny otázky jsou povinné. Pokud je však skupina irelevantní, jsou irelevantní i všechny její otázky. Tyto otázky jsou proto skutečně povinné, pouze pokud je skupina relevantní.
Můžete také vidět, že některé otázky se zobrazí, pouze pokud odpověď na předchozí otázku není prázdná. Níže vidíte, že pokud není vyplněno p2_sex, otázka p2_name se nezobrazí, i když je povinná. Povinná otázka p2_age se také nezobrazí, pokud není vyplněno p2_name. Tyto otázky lze považovat za „podmíněně povinné“.
Všimněte si také, že zprávy tip se vám vytvářejí automaticky. Jsou uspořádány podle rozsahu hodnot (min/max), rozsahu součtu hodnot (min/max/rovná se), počtu odpovědí (min/max) atd. (záleží na použitém typu otázky a aktivních atributech). Někdy chcete ověřit rozsah odpovědi, ale nechcete uživateli zobrazovat tipy k ověření, které mohou působit zbytečně. V takových případech můžete použít možnost otázky hide_tip (jako v tomto případě, aby se uživateli neříkalo, že věk musí být mezi 0 a 115, dokud nezadá nesprávnou hodnotu – viz p2_age).

Čárka jako desetinný oddělovač
Přestože LimeSurvey plně podporuje použití čárky jako desetinného oddělovače za běhu, při návrhu (např. při zadávání min/max hodnot v pokročilých atributech otázky) musíte jako desetinný oddělovač stále používat tečku. Funkční příklad naleznete zde.
Pamatujte také, že logika ověření se vytváří automaticky z povolených atributů otázky. Rovnice mohou vypadat složitě, ale nemusíte si s nimi dělat starosti.

