Перейти к содержанию

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 редакторе можно с помощью смарт-действия Обновить шаблон опроса.

Полезные ссылки

Настройка опросов

Работа с опросами в пользовательском интерфейсе