x

Основные главы

  1. LimeSurvey Cloud и LimeSurvey CE: сравнение
  2. Краткое руководство по началу работы - LimeSurvey 3.0+
  3. Установка - LimeSurvey CE
  4. Как разработать хороший опрос (руководство)
  5. Начиная
  6. Администрирование LimeSurvey
  7. Опросы - Вступление
  8. Настройки опроса
  9. Меню опроса
  10. Структура опроса
  11. Вопросы — введение
  12. Группы вопросов - введение
  13. Опросы - управление
  14. Параметры панели инструментов опроса
  15. Многоязычный опрос
  16. Движок ExpressionScript — краткое руководство
  17. Не классифицированы и расширенные функции
  18. ЧаВо
  19. Устранение неполадок
  20. Обходные пути
  21. Лицензия
  22. Журнал изменений версий
  23. Плагины
 Actions

Проверка логики опроса - расширенная

From LimeSurvey Manual

Эта страница, возможно, переведена машинным способом и может содержать ошибки. Показать английский оригинал · Улучшить этот перевод
This page is a translated version of the page Check survey logic - Advanced and the translation is 100% complete.


Общие сведения

Важная возможность, помогающая создавать и легко поддерживать сложные опросы, — Проверка логики опроса.

В ходе разработки и тестирования опроса, а также перед его активацией очень важно проверить логику опроса. Это особенно актуально при использовании сложных уравнений условия, адаптации текста и проверки: необходимо убедиться, что при прохождении опроса ничего не сломается.

Эта функция позволяет быстро проверить правильность опроса, групп и вопросов. Она доступна в меню верхней панели среди настроек, связанных с опросом, а именно в меню Инструменты:



Как видно выше, эту проверку можно запустить отдельно для каждого языка, используемого в опросе.

Описание

Функция Проверка логики опроса показывает всё, что вы задали для каждого вопроса и группы (например, имя, текст, справку, условия, правила проверки, значения по умолчанию, подвопросы, ответы), в удобном табличном виде. Она подсвечивает ошибки и позволяет щёлкнуть по ID вопросов и групп (или по переменным в уравнениях), чтобы открыть новые вкладки браузера для редактирования этих вопросов или групп. Так можно быстро исправить ошибки и обновить страницу проверки логики, чтобы убедиться в правильности опроса перед его активацией.

Отображение также рассчитано на то, чтобы его могли прочитать исследователи и заказчики исследования и проверить правильность дизайна и логики опроса. Проверка логики опроса обновляет кэш всех выражений, используемых в активном опросе.

Таблица содержит следующие столбцы:

  • # - показывает порядковые номера групп и вопросов, начиная с 0.
  • Имя [ID] - показывает код вопроса для группы/вопроса/подвопроса. Эти коды можно использовать как переменные в выражениях. ID — это ID вопроса (QID) или ID группы (GID). В этом поле также показан тип вопроса (например, Несколько ответов [M]).


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


  • Условие [Проверка] (По умолчанию) - показывает следующее:
    • Условие - уравнение условия для вопроса или группы с подсветкой синтаксиса. Если оно всегда истинно (вопрос показывается в любом случае), значение будет 1.
    • Проверка - ExpressionScript автоматически создаёт уравнение проверки на основе выбранных атрибутов вопроса (например, мин./макс. количество ответов, мин./макс./равные значения суммы, мин./макс. отдельные значения или проверка регулярным выражением). В этом разделе показано созданное уравнение проверки, чтобы вы могли обнаружить ошибки (например, неопределённые переменные).
      • Проверка на уровне вопроса показывает уравнение, необходимое для проверки описанных выше атрибутов вопроса
      • Проверка на уровне подвопроса показывает уравнение, необходимое для реализации array_filter, array_filter_exclude и exclusive_option
    • По умолчанию - если у вопроса есть значение по умолчанию, оно показано здесь с подсветкой синтаксиса (так как значением по умолчанию может быть выражение).
  • Текст [Помощь] (Подсказка) - показывает следующее:
    • Текст - текст группы, вопроса, подвопроса или ответа. Синтаксис подсвечен, чтобы показать встроенную адаптацию текста, что позволяет убедиться, что вы объявили все переменные, которые планируете использовать в адаптации.
    • Справка - показывает текст справки для вопроса, также с подсветкой синтаксиса.
    • Подсказка - показывает автоматически созданную подсказку по проверке на основе атрибутов вопроса. Эта же подсказка используется во всех стилях опроса, а также в печатной версии опроса и на экранах ввода данных.
    • Атрибуты вопросов - показывает таблицу всех соответствующих атрибутов этого вопроса. Атрибуты, которые могут быть уравнениями, подсвечены, чтобы вы могли проверить их правильность.

Строки выделены цветом следующим образом:

  • Группы - светло-серый фон
  • Вопросы - светло-зелёный фон
  • Подвопросы - бледно-жёлтый фон
  • Ответы - обычный белый фон

У ответов в столбце Условие есть дополнительный атрибут:

  • Значение - внутреннее значение по умолчанию, используемое в вычислениях. Если вы используете оценку ответов, это будет значение оценки ответов. В противном случае оно совпадает с именем ответа.


Описание опроса, приветственное и заключительное сообщения, финальный URL, уведомление о политике использования данных опроса и метка отображаются в проверке логики опроса (над таблицей), если соответствующие поля не пусты!

Использование

В верхней части страницы находится сводное сообщение. Если всё в порядке, там будет написано «Синтаксических ошибок в опросе не найдено» либо «Эта группа» или «Этот вопрос» «сама по себе не содержит синтаксических ошибок». В противном случае будет выведено сообщение «В X вопросах есть синтаксические ошибки, которые необходимо исправить».

У каждого вопроса с синтаксическими ошибками фон крайнего левого столбца (т. е. #) окрашивается в красный цвет. Кроме того, под столбцом Имя [ID] отображается предупреждение с минимальным количеством ошибок в вопросе. Часто встречаются следующие ошибки:

  • Неопределенное значение - если вы определили не все переменные или допустили опечатку в array_filter (либо используете разные наборы вариантов ответов для array_filter), в некоторых вопросах проверки будут показаны ошибки. Неопределённые переменные отображаются красным текстом в красной рамке.
  • Неверный синтаксис - при использовании уравнений условия можно поставить слишком много или слишком мало скобок. Такие синтаксические ошибки подсвечиваются и обводятся красной рамкой. Если навести указатель мыши на такой текст в красной рамке, во всплывающей подсказке будет описана ошибка.

Цвета в синтаксисе ExpressionScript

Условия и уравнения подсвечиваются, чтобы было проще понять, на что вы смотрите:

  1. Зелёный / голубой: переменная, ссылающаяся на вопрос, расположенный в опросе выше
  2. Синий: функция
  3. Серый: строковое выражение
  4. Коричневый: выражение TOKEN (данные участника)
  5. Чёрный: оператор

Что необходимо проверить:

  1. Фиолетовый: переменная, ссылающаяся на вопрос, расположенный в опросе ниже. Обычно это ошибка, и её необходимо проверить.
  2. Красный цвет или красная рамка: несуществующая переменная, ссылка на предыдущий вопрос или синтаксическая ошибка — обычно требует проверки.


Неопределённые переменные

Если используются неопределённые переменные, имя соответствующей переменной будет выделено красным цветом и обведено красной линией. Если навести указатель мыши на имя переменной, появится сообщение «undefined variable»:



  Внимание : Обратите внимание, что LimeSurvey не позволяет администраторам опросов создавать вопросы с одинаковым кодом вопроса. Однако в опросе могут оказаться одинаковые коды вопросов, если вы импортируете группу вопросов или вопрос, код которого совпадает с кодом одного из уже существующих вопросов. Вопрос всё равно можно импортировать, так как ID вопросов различаются. Однако если вы хотите экспортировать результаты опроса для дальнейшего анализа (результаты опроса) в R или SPSS, будьте осторожны: код вопроса воспринимается как переменная!



}}

Неверный синтаксис

Большинство ошибок, связанных с выражениями, вызвано неверным синтаксисом. Обычно администраторы опроса забывают добавить фигурную скобку, неправильно используют круглые скобки или применяют выражения неверно:



Здесь приведено множество хороших примеров использования подсветки синтаксиса.


Неверный пользовательский JavaScript

Ошибки JavaScript также подсвечиваются при проверке логики опроса:


Ускорение редактирования и проверки

Во всём тексте с подсветкой синтаксиса встроены всплывающие подсказки, по которым можно щёлкать:

  1. Всплывающие подсказки
    • Функции - при наведении указателя мыши отображаются назначение функции и описание её синтаксиса;
    • Имена переменных - при наведении указателя мыши отображаются позиция (группа, порядковый номер вопроса), текст вопроса и допустимые ответы на вопрос.
  2. Действия
    • Имена переменных - щелчок по имени переменной открывает новое окно, в котором можно редактировать вопрос. Это упрощает навигацию и проверку логики: просто продолжайте щёлкать по именам переменных в условиях или критериях проверки вопроса, чтобы увидеть, откуда они берутся и как используются.


Примеры

Следующие примеры взяты из примеров опросов ExpressionScript. На этой странице вы найдёте снимки экрана работающих опросов, пояснения и файлы для загрузки.


Индекс массы тела

Здесь приведены снимки экрана этого примера.

Это представление изменения порядка вопросов для расчёта индекса массы тела. Условия для веса, роста и ИМТ можно увидеть в столбце Вопрос:



Для лучшего обзора опроса откройте страницу проверки логики опроса:



Этот пример опроса также хорошо показывает вложенные операторы if() для формирования «weightstatus».


Каскадная логика

Здесь приведены снимки экрана этого примера.

Пример показывает логику проверки подвопросов, которая автоматически создаётся при использовании array_filter и array_filter_exclude. Также в этом примере показано, как можно подставить настроенное значение «Другое» (ответом для Q02_other является Q01_other).



Вопрос Q05 в этом примере демонстрирует одновременное использование array_filter и array_filter_exclude для Q01 и Q02 соответственно. Пример показывает возможности каскадного array_filter. Обратите внимание: одна из главных причин отображения критериев проверки на уровне вопроса и подвопроса - помочь убедиться, что вы не допустили опечаток в именах переменных array_filter или array_filter_exclude (или в случае, если вы используете разные имена переменных для списка отфильтрованных подвопросов). При наличии таких опечаток все недопустимые имена переменных будут показаны красным цветом как неопределённые, что позволит быстро исправить проблему.



Динамическое условие

Этот пример демонстрирует динамическую каскадную логику условий для управления видимостью вопросов. Вы можете скачать этот пример здесь.

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


Условие на уровне группы

В этом примере показано, как условие на уровне группы отображается при проверке логики. Здесь вы найдете скриншоты описанного ниже примера.

Как видите, уравнение условия на уровне группы (cohabs > 1 && p1_rel != "") отображается в сером ряду Person 2 для G-2.

Вы также можете заметить, что все вопросы обязательные. Однако если группа не является релевантной, то не являются релевантными и все её вопросы. Поэтому эти вопросы действительно обязательны только в том случае, если группа релевантна.

Кроме того, некоторые вопросы отображаются только в том случае, если ответ на предыдущий вопрос не пуст. Как видно ниже, если p2_sex не заполнен, то p2_name не будет отображаться, даже несмотря на то, что это обязательный вопрос. Обязательный вопрос p2_age также не будет отображаться, если не заполнен p2_name. Такие вопросы можно считать «условно обязательными».

Кроме того, обратите внимание, что сообщения-подсказки также создаются автоматически. Они упорядочены по диапазону значений (мин./макс.), диапазону суммы значений (мин./макс./равно), количеству ответов (мин./макс.) и т. д. (в зависимости от используемого типа вопроса и активных атрибутов). Иногда нужно проверить диапазон ответа, но не хочется показывать пользователю подсказки по проверке, которые могут выглядеть нелепо. В таких случаях можно использовать опцию вопроса hide_tip (как в данном примере, чтобы не сообщать пользователю, что возраст должен быть от 0 до 115, пока он не попытается ввести недопустимое значение — см. p2_age).


Запятая в качестве десятичного разделителя

Хотя LimeSurvey полностью поддерживает использование запятой в качестве десятичного разделителя во время прохождения опроса, при разработке опроса (например, при указании минимальных и максимальных значений в расширенных атрибутах вопроса) по-прежнему необходимо использовать точку. Рабочий пример можно найти здесь.

Также помните, что логика проверки создаётся автоматически на основе включённых атрибутов вопроса. Уравнения могут выглядеть громоздкими, но вам не нужно о них беспокоиться.