V průběhu vyplňování potřebujete, pokud se na základě dat, která uživatel vyplnil některé otázky nebo celé stránky zobrazí nebo naopak skryjí. Například pokud máte sadu utázek pouze pro ženy, tak tyto otázky budete chtít zobrazit pouze pokud předtím respondent vybral odpověď “žena”.
Podmínky statické
Statické podmínky předpokládají, že data už byla vyplněna na předcházejících stránkách a v tuto chvíli jsou už uloženy v databázi.
Statická podmínka se může týkat celé stránky, nebo se může týkat i jediné otázky.
Pokud se statická podmínka týká celé stránky, tak při nesplnění podmínky se stránka přeskočí. Zde například, pokud na otázku family_status byla vybrána odpověď married (ženatý) nebo in_relationship (ve vztahu), tak se zobrazí modul KMSS, což je dotazník Kansas Marital Satisfaction Scale. Pokud vybere respondent jinou hodnotu, stránka se přeskočí.
{
"type": "page",
"id": "page-kmss",
"display_conditions": [
{
"field": "family_status",
"value_in": [
"married",
"in_relationship"
]
}
],
"items": [
{
"name": "KMSS",
"type": "import",
"source": "KMSS"
}
]
}
Upozornění
Podmínky pro jednotlivé otázky jsou právě přepracovávány, takže jejich formát a funkcionalita se budou měnit.Pro jednotlivou otázku by stejná podmínka vypada následovně:
{
"name": "spokojenost ve vztahu",
"type": "single_choice_radio",
"text": "Jste ve vztahu spokojeni?",
"values": {
"0": "Ne",
"1": "Ano"
},
"condition": [
{
"field": "family_status",
"value_in": [
"married",
"in_relationship"
]
}
]
}
Jsou podporovány následující typy podmínek:
value: "1"
- hodnota musí být 1value_in: ["1", "2", "3", "4"]
- hodnota musí nabývat jedné z hodnot, uvedených v polivalue_not: "1"
- hodnot NENÍ 1value_not_in: ["1", "2", "3", "4"]
- hodnota NESMÍ nabývat žádné z hodnot v politolerant: true|false
- výchozí hodnota je false. Standardně pokud systém vyhodnocuje podmínku a nenajde příslušnou proměnnou v už uložených datech respondenta, tak skončí s chybou ConfigurationSystemException. V některých situací je ale žádoucí, aby podmínka byla tolerantní, takže pokud je nastavena hodnotatolerant: true
, tak potom systém tuto podmínku vyhodnotí jako nesplněnou, pokud nenajde zdrojová data a nebude vyhazovat chybu.
Parametr display_conditions
nebo conditions
je pole, takže je možné zadat více podmínek. Vyphodnocování
probíhá v pořadí jak jsou podmínky zadány a pro zobrazení otázky nebo stránky stačí, pokud jedna podmínka je vyhodnocena
pozitivně. Podmínky jsou tedy ve vztahu nebo.
Podmínky jsou vyhodnocovány i při odeslání, takže pokud je otázka zobrazena, tak se kontroluje i jestli je vyplněná.
Podmínky dynamické
Dynammické podmínky se používají, pokud se dynamicky mění zobrazení formuláře přímo v prohlížeči, tj. při zaškrtnutí některé otázky se přímo zobrazí nebo naopak skryjí.
Jednoduchá uzkázka:
{
"type": "page",
"id": "page101",
"items": [
{
"name": "sex",
"type": "single_choice_radio",
"text": "Jste:",
"values": {
"0": "Muž",
"1": "Žena"
}
},
{
"name": "sex_confirmation",
"type": "single_choice_radio",
"text": "Skutečně jste žena?",
"values": {
"0": "Ano",
"1": "Ne"
},
"display_if": {
"what": "sex",
"value": "1"
}
},
{
"type": "statement",
"name": "final",
"text": "End of All Questions."
}
]
}
Na této stránkce, pokud vybereme odpověď Muž, tak se nezobrazí další otázka:
Pokud vybereme odpověď Žena, tak se zobrazí doplňující otázka:
Dynamická podmínka se vyhodnocuje i při odeslání. Pokud je splněná, tak se u zobrazené otázky kontroluje, jestli je vyplněná. Takže za těchto okolností, pokud respondent vybere že je Žena a nedoplní, jestli je skutečně žena, tak mu systém nedovolí pokračovat na další stránku.
Je možné zaráz odkazovat více hodnot. Tyto hodnoty potom musíme uvést jako pole. Můžeme odkazovat na různé hodnoty pro single_choice nebo na více hodnot multiple_choice. Např:
{
"display_if": {
"what": "nemoci",
"value": [
"1",
"2",
"3",
"4"
]
}
}
Přeskakování stránek
Poslední možností zpracování podmínek je vyhodnocení stránky po jejím uložení a následně přeskočení na jinou stránku.
Klíčový je parametr jump
, který určuje na kterou stránku, označenou pomocí id:
parametru po vyplnění a
úspěšném vyhodnocení podmínky systém přeskočí.
{
"pages": [
{
"type": "page",
"id": "page_1",
"items": [
{
"name": "sex",
"type": "single_choice_radio",
"text": "Jste:",
"values": {
"m": "Muž",
"f": "Žena"
}
}
],
"conditions": [
{
"field": "sex",
"value": "m",
"jump": "page_for_all"
}
]
},
{
"type": "page",
"id": "page_for_women",
"items": [
{
"name": "question_for_women%_1",
"type": "single_choice_radio",
"text": "1. Otázka pouze proženy",
"values": {
"0": "Ano",
"1": "Ne"
}
},
{
"name": "question_for_women_2",
"type": "single_choice_radio",
"text": "2. Otázka pouze proženy",
"values": {
"0": "Ano",
"1": "Ne"
}
}
]
},
{
"type": "page",
"id": "page_for_all",
"items": [
{
"name": "question_for_everyone",
"type": "single_choice_radio",
"text": "Otázka pro všechny",
"values": {
"0": "Ano",
"1": "Ne"
}
}
]
}
]
}
V tomto dotazníku pokud respondent vyplní hodnotu “Muž”, tak přeskočí na stránku page_for_all
. Pokud vybere
hodnotu žena, tak se zobrazí stránka s otázkami “1. a 2. otázka pouze pro ženy”.
Pomocí této logiky jde realizovat velmi složité postupy pro řízení průchodu dotazníkem. Nicméně oproti výše uvedeným
metodám display_conditions
je tento způsob poměrně složitý a komplikovaný na otestování.