Тип вопроса rank представляет список вариантов, которые респондент должен перетащить в нужном порядке (или иначе упорядочить от первого до последнего). Результат хранится в виде разделённого пробелами списка значений вариантов в выбранном порядке, с наиболее приоритетным вариантом первым.

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

typenamelabel
rank prioritiesmain_priorityУпорядочите потребности сообщества от наиболее до наименее важных

Варианты определяются в листе choices так же, как для select_one:

survey:

typenamelabel
rank prioritiesmain_priorityУпорядочите потребности от наиболее до наименее важных

choices:

list_namenamelabel
prioritieswaterЧистая вода
prioritieshealthЗдравоохранение
prioritieseducationОбразование
prioritiesroadsДороги
prioritieselectricityЭлектричество

Формат хранимого значения

Хранимое значение — это разделённый пробелами список значений вариантов в ранжированном порядке (первый = наивысший приоритет):

  water education health roads electricity
  

Извлечение ранжированных позиций

Используйте selected-at() для получения варианта на конкретной позиции ранга:

typenamelabelcalculation
rank prioritiesmain_priorityУпорядочите потребности сообщества
calculatetop_priorityselected-at(${main_priority}, 0)
calculatesecond_priorityselected-at(${main_priority}, 1)

selected-at(${main_priority}, 0) возвращает значение, поставленное первым (индекс 0 = наивысший ранг).

Использование rank-index() с группами повторений

Когда rank используется внутри группы повторений, rank-index() позволяет ссылаться на порядковый ранг извне повторения:

typenamelabelcalculation
calculatefirst_rankedrank-index(1, ${score})

Подробности о rank-index() и rank-index-if() см. в Функции — Функции для повторяющихся полей.

Применение

Вопросы типа rank обычно используются для:

  1. Ранжирования приоритетов — просьба сообществ упорядочить потребности в развитии
  2. Упорядочивания предпочтений — ранжирование функций продукта, атрибутов услуги или вариантов политики
  3. Упорядочивания элементов экзамена — расстановка шагов в процессе
  4. Отбора Top-N — в сочетании с selected-at() для извлечения только 1, 2 или 3 лучших вариантов

Лучшие практики

  1. Держите список коротким (3–7 элементов) — ранжирование становится когнитивно затруднительным при более чем 7–8 вариантах.
  2. Используйте чёткие, взаимоисключающие метки вариантов, чтобы избежать путаницы в значении “первого”.
  3. Добавьте текст подсказки, объясняющий направление ранжирования (например, “Перетащите для упорядочивания: первый = наиболее важный”).
  4. Используйте count-selected(.) = x для проверки, что все варианты ранжированы.

Ограничения

  • Виджет перетаскивания требует сенсорного экрана или мыши — он может плохо работать в средах только с клавиатурой.
  • На некоторых старых мобильных клиентах виджет ранжирования может переходить к интерфейсу с числовым вводом.
  • Нельзя выполнять частичное ранжирование (то есть ранжировать только часть вариантов) — все варианты должны быть упорядочены.
Была ли эта страница полезной?