{ "version": 1, "title": "Tutorial — Conditionals (Advanced: and, or, numeric)", "fields": [ { "id": "intro", "type": "note", "label": "Advanced conditionals combine expressions with 'and' / 'or' and numeric comparisons (>, <, >=, <=). Use parentheses for complex logic." }, { "id": "divider_1", "type": "divider" }, { "id": "example_and_note", "type": "note", "label": "Example 1 — 'and': both conditions must be true." }, { "id": "age", "type": "number", "label": "Age of respondent", "required": true }, { "id": "employment_status", "type": "select_one", "label": "Employment status", "required": true, "options": [ {"value": "employed", "label": "Employed"}, {"value": "unemployed", "label": "Unemployed"}, {"value": "student", "label": "Student"}, {"value": "retired", "label": "Retired"} ] }, { "id": "workplace_name", "type": "text", "label": "Workplace or employer name", "relevant": "employment_status = 'employed' and age >= 18", "hint": "Shown only when employed AND 18 or older" }, { "id": "school_name", "type": "text", "label": "School or university name", "relevant": "employment_status = 'student' and age < 30", "hint": "Shown only when student AND under 30" }, { "id": "divider_2", "type": "divider" }, { "id": "example_or_note", "type": "note", "label": "Example 2 — 'or': either condition is enough." }, { "id": "housing_type", "type": "select_one", "label": "Housing type", "options": [ {"value": "owned", "label": "Owned"}, {"value": "rented", "label": "Rented"}, {"value": "informal", "label": "Informal / No title"}, {"value": "shared", "label": "Shared / Family"} ] }, { "id": "monthly_cost", "type": "number", "label": "Monthly housing cost (USD)", "relevant": "housing_type = 'rented' or housing_type = 'shared'", "hint": "Shown when rented OR shared — both involve a recurring cost" }, { "id": "divider_3", "type": "divider" }, { "id": "example_numeric_note", "type": "note", "label": "Example 3 — Numeric thresholds: show fields based on a number entered earlier." }, { "id": "household_members", "type": "number", "label": "Total household members", "required": true }, { "id": "large_household_note", "type": "note", "label": "Large household detected. Please complete the extended section below.", "relevant": "household_members >= 7" }, { "id": "extended_family", "type": "select_one", "label": "Does the household include extended family (grandparents, relatives)?", "relevant": "household_members >= 7", "options": [ {"value": "yes", "label": "Yes"}, {"value": "no", "label": "No"} ] }, { "id": "shared_rooms", "type": "number", "label": "Number of rooms used for sleeping", "relevant": "household_members >= 5" }, { "id": "divider_4", "type": "divider" }, { "id": "example_combined_note", "type": "note", "label": "Example 4 — Combined 'and'/'or': multiple conditions on different fields." }, { "id": "region", "type": "select_one", "label": "Region", "options": [ {"value": "urban", "label": "Urban"}, {"value": "peri_urban", "label": "Peri-urban"}, {"value": "rural", "label": "Rural"} ] }, { "id": "remote_access_note", "type": "note", "label": "Remote area protocol: record GPS route and take two photos.", "relevant": "region = 'rural' and household_members > 0" }, { "id": "route", "type": "route", "label": "Access route to location", "relevant": "region = 'rural' or region = 'peri_urban'" }, { "id": "location", "type": "geopoint", "label": "Location", "required": true }, { "id": "notes", "type": "textarea", "label": "Notes" } ] }