JSON-редактор опросов¶
Опрос можно гибко настроить не только через визуальный конструктор, но и с помощью JSON редактора. Он доступен во вкладке JSON редактор в редакторе опроса по кнопке из пользовательского интерфейса.
Общие параметры¶
Описание параметров:
Параметр
Описание
locale
Язык интерфейса опросника. Возможные значения: \'ru\', \'eng\'. Если не указан, используется язык устройства.
ru
Русский
eng
Английский
title
Заголовок всего опросника. Если значение не указано, будет использоваться заголовок "Опрос". Данный заголовок будет использоваться при группировке вопросов в блоке результатов опроса
description
Подзаголовок опросника. Если значение не указано, подзаголовок отображаться не будет
focusFirstQuestionAutomatic
Управляет автоматическим фокусом на первом вопросе
true
Автоматически устанавливается фокус на первый редактируемый вопрос при открытии опроса
false
Значение по умолчанию. Фокус не устанавливается автоматически, пользователю требуется самостоятельно нажать на вопрос
goNextPageAutomatic
Включает автоматический переход на следующую страницу после заполнения всех обязательных и необязательных полей текущего вопроса
true
Переход на следующую страницу выполняется автоматически
false
Значение по умолчанию. Пользователь должен сам нажать кнопку перехода к следующей странице
startSurveyText
Текст кнопки начала опроса. Если не указан, используется значение "Начать". Локализуется согласно указанному языку (locale)
Пример фрагмента:
"startSurveyText": { "ru": "Старт" } pagePrevText
Текст кнопки возврата на предыдущую страницу. Если не указан, используется значение "Назад". Локализуется согласно указанному языку (locale)
Пример фрагмента:
"pagePrevText": { "ru": "Предыдущая страница" } pageNextText
Текст кнопки перехода на следующую страницу. Если не указан, используется значение "Далее". Локализуется согласно указанному языку (locale)
Пример фрагмента:
"pageNextText": { "ru": "Следующая страница" } completeText
Текст кнопки завершения опроса. Если не указан, используется значение "Завершить". Локализуется согласно указанному языку (locale)
Пример фрагмента:
"completeText": { "ru": "Завершить" } firstPageIsStarted
Определяет, должна ли открываться первая страница с вопросом, доступным для редактирования.
true
Значение по умолчанию. При переходе к опросу откроется первая страница, на которой вопросы доступны для редактирования
false
При переходе к опросу откроется первая настроенная страница, вне зависимости от того, доступны ли вопросы для редактирования или они предназначены только для информации.
showNavigationButtons
Управляет отображением кнопок навигации между страницами ("Назад"/"Вперед"). Возможные значения:
top
Кнопки отображаются в верхней части страницы
bottom
Значение по умолчанию. Кнопки отображаются в нижней части страницы
both
Кнопки отображаются и в верхней, и в нижней части страницы
none
Кнопки навигации отсутствуют, возможен только автоматический переход вперед после ответа на вопросы
showPrevButton
Определяет видимость кнопки возврата на предыдущую страницу
true
Значение по умолчанию. Кнопка "Назад" доступна
false
Кнопка "Назад" не отображается, можно перемещаться по опроснику только на следующие страницы
Структура страниц и вопросов¶
Описание параметров:
Параметр
Описание
pages
Массив страниц
name
Имя каждой страницы. К имени страницы можно обратиться внутри редактора в качестве ключа
title
Отображаемый заголовок страницы
description
Отображаемый подзаголовок страницы
elements
Вопросы
type
Тип вопроса. Возможные значения:
radiogroup
Множественный выбор с возможностью ввода свободного варианта ответа
boolean
Булиевое значение. Подразумевает ответ в формате "Да"/"Нет"
file
Поле для вложения файла
comment
Комментарий
dropdown
Выпадающий список
text
Текстовый ввод
name
Имя вопроса. К имени вопроса можно обратиться внутри редактора в качестве ключа, к примеру, для создания логики "if-else"
title
Отображаемый текст вопроса
description
Пояснение к вопросу. Может быть пустым
placeholder
Подсказка для вопроса
isRequired
Вопрос является обязательным
hideNumber
Скрыть порядковый номер вопрос
visible
Вопрос отображается для пользователя.
Если ключ принимает значение false, вопрос будет скрыт от пользвоателя, пока не будет выполнено определённое условие или не сработает некий триггер
visibleIf
Показать вопрос по условию
Пример условия: {name} = \'No\' , где name — это имя вопроса, от которого зависит видимость текущего вопроса. Если в указанном вопросе был выбран ответ "No", то данный вопрос становится видимым
allowMultiple
Возможность добавления в поле более одного файла
acceptedTypes
Типы доступных расширений файлов:
-
file_extension — Список расширений (.gif, .jpg, .png, .doc и т.п.)
-
audio/* — Пользователь может вкладывать любые аудиофайлы
-
video/* — Пользователь может вкладывать любые видеофайлы
-
image/* — Пользователь может вкладывать любые изображения
sourceType
Допустимый источник загрузки изображений. Возможные значения:
file
Значение по умолчанию. Позволяет загружать уже имеющиеся изображения из локального хранилища устройства
file-camera
Комбинированный вариант, который предлагает пользователю возможность выбора: либо загрузить готовое изображение из локального хранилища, либо сделать снимок с помощью камеры устройства
camera
Возможно только сделать снимок с помощью камеры устройства
choices
Варианты ответов в формате "Ключ": "Значение"
Пример фрагмента:
"choices": \ { "value": "Item 1", "text": "Да" }, { "value": "Item 2", "text": "Нет" }, { "value": "Item 3", "text": "Не применимо" } labelTrue
Состояние переключателя (свитчера). По умолчанию принимает значение "Да"
labelFalse
Состояние переключателя (свитчера). По умолчанию принимает значение "Нет"
choicesByUrl
Используется для подключения опроса к внешнему REST API. Этот сервис возвращает набор значений (choices), которые используются в вопросах с множественным выбором, таких как Checkbox, Dropdown, Radiogroup и другие типы вопросов с вариантами ответов.
Пример:
"choicesByUrl": {
"url": "https://ru.1forma.ru/app/v1.2/api/publications/action/surveyjs-simple-get-source"
}
selectToRankEnabled
Включение режима ранжирования. Параметр определяет, могут ли пользователи выбирать варианты, которые они хотят упорядочить.
Когда это свойство включено, вопрос ранжирования отображает две области: для упорядоченных и неупорядоченных вариантов. Чтобы расположить варианты в порядке, пользователям сначала нужно перетащить их из области неупорядоченных в область упорядоченных. Используйте этот режим, если хотите разрешить пользователям упорядочивать только выбранные ими варианты.
По умолчанию отключено (false).
Пример JSON
Пример JSON:
{ "title": "Чеклист мерчендайзера", "description": "Подпись", "logoPosition": "right", "pages": [ { "name": "страница1", "elements": [ { "type": "radiogroup", "name": "q1", "title": "Манекены одеты по актуальному списку (если одежда есть в наличии). Если нет, замена корректная (по бренду или стилю или цвету)", "choices": \ { "value": "Item 1", "text": "Да" }, { "value": "Item 2", "text": "Нет" }, { "value": "Item 3", "text": "Не применимо" } }, { "type": "panel", "name": "вопрос3", "elements": [ { "type": "dropdown", "name": "вопрос4", "title": "Раздел", "hideNumber": true, "defaultValue": 1455543, "readOnly": true, "choicesByUrl": { "url": "https://ru.1forma.ru/app/v1.2/api/publications/action/surveyjs-simple-get-source" } }, { "type": "dropdown", "name": "вопрос5", "title": "Функция", "hideNumber": true, "defaultValue": 1455806, "readOnly": true, "choices": \ "Item 1", "Item 2", "Item 3" \, "choicesByUrl": { "url": "https://ru.1forma.ru/app/v1.2/api/publications/action/surveyjs-simple-get-source" } }, { "type": "dropdown", "name": "вопрос6", "title": "Подфункция", "hideNumber": true, "readOnly": true, "choices": \ "Item 1", "Item 2", "Item 3" \, "choicesByUrl": { "url": "https://ru.1forma.ru/app/v1.2/api/publications/action/surveyjs-simple-get-source" } }, { "type": "dropdown", "name": "вопрос7", "title": "Исполнитель задачи", "hideNumber": true, "choices": \ "Item 1", "Item 2", "Item 3" \, "choicesByUrl": { "url": "https://ru.1forma.ru/app/v1.2/api/publications/action/surveyjs-simple-get-source" } }, { "type": "dropdown", "name": "вопрос8", "title": "Отправка копии", "hideNumber": true, "choices": \ "Item 1", "Item 2", "Item 3" \, "choicesByUrl": { "url": "https://ru.1forma.ru/app/v1.2/api/publications/action/surveyjs-simple-get-source" } }, { "type": "boolean", "name": "вопрос9", "title": "Не считать вопрос в итог", "hideNumber": true, "defaultValue": "true" }, { "type": "comment", "name": "вопрос10", "title": "Описание", "hideNumber": true, "defaultValue": "Тут текст описания и дополнительного комментария", "readOnly": true }, { "type": "boolean", "name": "вопрос11", "visible": false, "title": "Короткая проверка", "hideNumber": true, "defaultValue": "true", "readOnly": true }, { "type": "dropdown", "name": "вопрос12", "title": "Критичность", "hideNumber": true, "choices": \ "Item 1", "Item 2", "Item 3" \, "choicesByUrl": { "url": "https://ru.1forma.ru/app/v1.2/api/publications/action/surveyjs-simple-get-source" } }, { "type": "comment", "name": "вопрос13", "title": "Замечание", "hideNumber": true }, { "type": "text", "name": "вопрос14", "title": "Срок", "hideNumber": true, "inputType": "datetime-local" }, { "type": "dropdown", "name": "вопрос15", "title": "Ответственный", "hideNumber": true, "choices": \ "Item 1", "Item 2", "Item 3" \, "choicesByUrl": { "url": "https://ru.1forma.ru/app/v1.2/api/publications/action/surveyjs-simple-get-source" } }, { "type": "file", "name": "вопрос16", "title": "Фото", "hideNumber": true, "sourceType": "file-camera" } \,] "visible": false, "visibleIf": "{q1} = \'Item 2\'", "title": "Уточнение", "state": "expanded" }, { "type": "radiogroup", "name": "вопрос2", "title": "Манекены выглядят опрятно, защита и ярлыки не видны, размер подобран правильно. Сделан стайлинг согласно инструкции", "choices": \ { "value": "Item 1", "text": "Да" }, { "value": "Item 2", "text": "Нет" }, { "value": "Item 3", "text": "Не применимо" } } \,] "title": "Витрины", "description": "Описание страницы" } ] }
Автоматическое обновление шаблона¶
Автоматизировать обновление шаблона в JSON редакторе можно с помощью смарт-действия Обновить шаблон опроса.