Пропуск вопросов
Логика переходов, также известная как ветвление или условная логика, позволяет создавать динамические опросы, адаптирующиеся к ответам респондентов. В rtSurvey логика переходов реализуется с помощью столбца relevant в XLSForm.
Базовая логика переходов
Для реализации базовой логики переходов используйте столбец relevant для указания условия:
| type | name | label | relevant |
|----------------|---------------|-----------------------------|--------------------|
| select_one y_n | likes_pizza | Вы любите пиццу? | |
| select_multiple pizza_toppings | favorite_topping | Любимые начинки | ${likes_pizza} = 'yes' |
В этом примере вопрос «Любимые начинки» отображается только если респондент ответил «Да» на вопрос о любви к пицце.
Синтаксис выражений relevant
- Используйте
${ }для ссылки на переменные других вопросов. - Для вопросов
select_oneсравнивайте напрямую:${question_name} = 'answer' - Для вопросов
select_multipleиспользуйте функциюselected().
Расширенная логика переходов
Несколько условий
Объединяйте несколько условий с помощью and, or и скобок:
| type | name | label | relevant |
|---------|-------|-------------------------|-------------------------------------------|
| integer | age | Сколько вам лет? | |
| text | school| В какой школе вы учитесь? | ${age} < 18 and (${location} = 'urban' or ${location} = 'suburban') |
Использование вопросов select_multiple
Для вопросов select_multiple используйте функцию selected():
| type | name | label | relevant |
|----------------|---------------|-----------------------------|-----------------------------------------|
| select_multiple pizza_toppings | favorite_topping | Любимые начинки | |
| text | cheese_type | Любимый вид сыра | selected(${favorite_topping}, 'cheese') |
Опция «Другое» в вопросах с выбором
Реализуйте свободный ввод для варианта «Другое» с помощью relevant:
| type | name | label | relevant |
|----------------|----------------------|-------------------------------------|---------------------------------------|
| select_multiple pizza_toppings | favorite_toppings | Какие у вас любимые начинки пиццы? | |
| text | favorite_toppings_other | Какие другие начинки вам нравятся? | selected(${favorite_toppings}, 'other') |
Не забудьте включить ‘other’ как вариант в лист choices.
Функции rtSurvey
Динамические условия
rtSurvey позволяет использовать динамические условия на основе вычисляемых полей:
| type | name | label | calculation |
|-----------|------------|--------------------|-----------------------------|
| calculate | total_score| Общий балл | ${score1} + ${score2} + ${score3} |
| text | feedback | Обратная связь | ${total_score} > 75 |
Условия в группах повторений
rtSurvey поддерживает условия внутри групп повторений:
| type | name | label | relevant |
|--------------|--------------|------------------|------------------------|
| begin repeat | child_info | Информация о ребёнке| |
| integer | child_age | Возраст ребёнка | |
| text | school_name | Название школы | ${child_age} >= 5 |
| end repeat | | | |
Каскадные условия
rtSurvey эффективно обрабатывает каскадные условия, когда условие одного вопроса зависит от другого:
| type | name | label | relevant |
|----------------|-------------|------------------------|------------------------|
| select_one y_n | has_car | У вас есть автомобиль? | |
| select_one car_type | car_type | Какой тип автомобиля? | ${has_car} = 'yes' |
| text | model | Конкретная модель | ${car_type} = 'sedan' |
Лучшие практики логики переходов в rtSurvey
- Простота: По возможности избегайте слишком сложных условий.
- Тщательное тестирование: Используйте функцию предпросмотра rtSurvey для тестирования всех возможных путей.
- Учитывайте производительность: Сложная логика переходов может влиять на производительность опроса, особенно на мобильных устройствах.
- Понятные имена переменных: Это делает выражения условий более читаемыми.
- Документируйте логику: Добавляйте примечания для объяснения сложных схем переходов.
- Учитывайте анализ данных: Пропущенные вопросы приводят к пропущенным данным. Планируйте анализ соответственно.
Устранение проблем с логикой переходов
- Синтаксические ошибки: Убедитесь, что все
${ }правильно закрыты и написаны без ошибок. - Циклические ссылки: Избегайте создания петель, где вопросы зависят друг от друга.
- Чувствительность к регистру: Варианты ответов чувствительны к регистру в выражениях условий.
- Числовые сравнения: Используйте соответствующие операторы (
<,>,=) для числовых сравнений.
Заключение
Эффективное использование логики переходов может значительно улучшить опыт респондентов и качество данных в ваших проектах rtSurvey. Используя расширенные функции rtSurvey и следуя лучшим практикам, вы можете создавать динамичные, эффективные опросы.