Розширені повтори
Розширені шаблони для груп повторів: динамічні лічильники, вкладені повтори, підсумовування даних повторів та посилання на значення між повторами.
Ця сторінка охоплює розширені шаблони роботи з групами повторів у rtSurvey. Для основ налаштування групи повторів дивіться Групування та повтори.
Динамічний лічильник повторів
За замовчуванням анкетер вирішує, скільки разів повторювати. Ви можете фіксувати кількість повторень за допомогою repeat_count:
| type | name | label | repeat_count |
|---|---|---|---|
| begin_repeat | household_members | Household member | ${num_members} |
| text | member_name | Member name | |
| integer | member_age | Age | |
| end_repeat |
Індексований доступ: indexed-repeat()
Отримайте доступ до значення поля конкретного екземпляру повтору поза групою повтору за допомогою indexed-repeat(repeatedField, repeatGroup, index):
| type | name | label | calculation |
|---|---|---|---|
| calculate | first_name | indexed-repeat(${member_name}, ${household_members}, 1) | |
| calculate | second_name | indexed-repeat(${member_name}, ${household_members}, 2) |
Поточна позиція екземпляру: index()
Всередині групи повтору index() повертає позицію поточного екземпляру (починаючи з 1):
| type | name | label |
|---|---|---|
| begin_repeat | plots | Plot |
| note | plot_label | Plot number ${index()} |
| text | plot_id | Plot ID |
| end_repeat |
Підсумовування даних повтору
Використовуйте агрегатні функції повтору поза групою повтору:
| Функція | Приклад | Опис |
|---|---|---|
count(group) | count(${household_members}) | Кількість екземплярів |
sum(field) | sum(${loan_amount}) | Сума числового поля |
min(field) | min(${member_age}) | Мінімальне значення |
max(field) | max(${member_age}) | Максимальне значення |
join(sep, field) | join(', ', ${member_name}) | Список, розділений комами |
count-if(group, expr) | count-if(${members}, ${member_age} < 18) | Умовний підрахунок |
sum-if(field, expr) | sum-if(${loan_amount}, ${loan_amount} > 500) | Умовна сума |
Вкладені повтори
Група повтору може містити іншу групу повтору. Використовуйте це обережно:
| type | name | label |
|---|---|---|
| begin_repeat | households | Household |
| text | hh_id | Household ID |
| begin_repeat | hh_members | Member |
| text | member_name | Member name |
| end_repeat | ||
| end_repeat |
Найкращі практики
- Завжди використовуйте
repeat_count, якщо кількість повторень відома заздалегідь. - Зберігайте групи повторів сфокусованими — повтор з 20+ питаннями важко навігувати.
- Чітко іменуйте групи повторів.
- Тестуйте з максимально очікуваною кількістю екземплярів.
- Використовуйте appearance
field-listдля груп повторів на мобільних пристроях.
Обмеження
indexed-repeat()потребує дійсного індексу.- Вкладені повтори більше 2 рівнів не рекомендуються.
- Агрегатні функції працюють на всій групі повтору.