select_one_from_file та select_multiple_from_file працюють як select_one та select_multiple, але замість визначення варіантів у таблиці choices, варіанти завантажуються з зовнішнього CSV або XML файлу, прикріпленого до форми. Це корисно, коли ваш список варіантів дуже довгий, часто змінюється або потребує оновлення без перебудови всієї форми.

Базова специфікація XLSForm

typenamelabel
select_one_from_file health_facilities.csvfacilitySelect the health facility
select_multiple_from_file crops.csvcropsWhich crops does the household grow?

Назва файлу після назви типу повинна відповідати назві файлу, який ви прикріплюєте під час завантаження форми.

Формат CSV файлу

Ваш CSV файл повинен мати щонайменше два стовпці: name (збережене значення) та label (відображуваний текст). Ви можете додавати будь-яку кількість додаткових стовпців для фільтрації.

health_facilities.csv:

  name,label,district,type
HF001,Nairobi Central Clinic,Nairobi,clinic
HF002,Westlands Health Centre,Nairobi,health_centre
HF003,Kisumu District Hospital,Kisumu,hospital
  

Фільтрація варіантів

Використовуйте стовпець choice_filter для показу лише варіантів, що відповідають поточному контексту. Посилайтеся на стовпці CSV безпосередньо за їх назвою стовпця (без ${}):

typenamelabelchoice_filter
select_one districts.csvdistrictSelect district
select_one_from_file health_facilities.csvfacilitySelect facilitydistrict = ${district}

У цьому прикладі показуються лише заклади у вибраному районі. district у choice_filter посилається на стовпець district у CSV файлі; ${district} посилається на поле форми з назвою district.

Використання

Питання select-from-file зазвичай використовуються для:

  1. Довгих списків варіантів — заклади охорони здоров’я, школи, села, списки видів (сотні або тисячі елементів)
  2. Часто оновлюваних списків — коли основний список змінюється між раундами опитування, оновлюйте лише CSV без перебудови форми
  3. Спільних довідкових даних — один CSV файл використовується в кількох формах
  4. Фільтрованих каскадних виборів — завантажте всі регіони/райони/села в один файл, потім фільтруйте за батьківським вибором

Прикріплення файлу

Коли ви завантажуєте форму до rtSurvey, прикріпіть CSV файл як медіа-вкладення. Назва файлу у визначенні форми повинна точно відповідати назві файлу вкладення.

Використання choice-label() з from-file

Для відображення мітки обраного варіанту в полі note або calculate:

typenamelabelcalculation
select_one_from_file health_facilities.csvfacilitySelect facility
calculatefacility_labelchoice-label(${facility}, ${facility})
notesummarySelected facility: ${facility_label}

Найкращі практики

  1. Тримайте CSV файли до 5 000 рядків для хорошої продуктивності на мобільних пристроях.
  2. Завжди включайте стовпці name та label — додаткові стовпці необов’язкові.
  3. Для каскадних виборів використовуйте один CSV з батьківським стовпцем та фільтруйте за допомогою choice_filter.
  4. Версіонуйте ваші CSV назви файлів (наприклад, facilities_v3.csv) при внесенні змін, що порушують структуру стовпців.
  5. Ретельно тестуйте вирази фільтрації — помилка друку в choice_filter мовчазно показуватиме жодних варіантів.

Обмеження

  • Дуже великі CSV файли (10 000+ рядків) можуть уповільнити завантаження форми, особливо на пристроях нижчого класу.
  • CSV файли повинні завантажуватися разом з формою — їх неможливо отримати з URL під час виконання (використовуйте search() або pulldata() для динамічних пошуків).
  • select_multiple_from_file менш поширено підтримується в різних клієнтах — перевіряйте сумісність перед використанням.
select_one_from_fileAppearance search()
Джерело варіантівПрикріплений CSV/XML файлСерверний запит до бази даних
Працює офлайнТак (файл в комплекті)Потребує підключення
Кількість варіантівОбмежена пам’яттю пристроюНеобмежена (з пагінацією)
Дані в реальному часіНіТак

Для великих, часто змінюваних або серверних наборів даних дивіться Динамічний пошук.

Чи була ця сторінка корисною?