Функции JavaScript в формах опроса

Можно использовать функцию pulldata("@javascript") для вызова функций JavaScript, что позволяет использовать передовые методы и логику, которые не доступны при работе только с XLSForm.

Вы можете управлять функциями JavaScript и редактировать их на вкладке Скрипты в Survey123 Connect. На этой вкладке вы можете создать файл JavaScript, просмотреть код и протестировать функцию. Эта вкладка не является полной заменой интегрированной среды разработки (IDE), которая может обеспечивать проверку кода и анализ передового опыта, чтобы помочь в разработке функций JavaScript, но предназначена для помощи в интеграции этих функций в Survey123.

Инструменты-скрипты в Survey123 Connect

Следующие инструменты доступны в меню на вкладке Скрипты в Survey123 Connect:

  • Файлы скриптов - Показывает все файлы JavaScript, находящиеся в папке Scripts вашего опроса. Выберите файл для просмотра и редактирования.
  • Открыть папку скриптов - Запускает файловый браузер в том месте, где находится папка Scripts вашего опроса.
  • Файл нового скрипта - Создает файл скрипта в папке Scripts вашего опроса. Введите имя файла и щелкните Создать.
  • Выбрать функцию - Выделяет первую функцию в открытом файле и представляет параметры для тестирования.
  • Сохранить - Сохраняет изменения в открытом файле.
  • Запустить внешний редактор - Запускает системную IDE JavaScript по умолчанию с открытым файлом.

Щелкните инструмент Выбрать функцию, чтобы проверить поведение первой функции в файле, введя значения для каждого параметра и просмотрев результат. Закончив работу с функцией, вы можете скопировать представленный здесь оператор pulldata и вставить его в файл XLSForm. Если вы вошли в свою организацию, щелкните правой кнопкой мыши любой из параметров и при необходимости щелкните Вставить токен.

Примечание:
Основные синтаксические ошибки отображаются на вкладке Скрипты с индикатором ошибки рядом с номером строки. Обработка ошибок должна быть реализована внутри функции JavaScript. Выход консоли отображается на вкладке Скрипты, поэтому, включив в функцию сообщения консоли, вы можете видеть ошибки, предупреждения и информационные сообщения, отображаемые вместе с выходом.

Базовый синтаксис

Вы можете вызывать пользовательские функции JavaScript для возврата значений. Используйте следующий синтаксис для вызова пользовательских функций JavaScript с помощью функции pulldata("@javascript"):

pulldata("@javascript", "yourJSFile.js", "yourFunction", "parameter1", "parameter2")

Пользовательские файлы JavaScript должны храниться в папке scripts в каталоге опроса. В приведенном выше примере функция JavaScript ожидает два параметра, но может быть добавлено любое количество параметров функции.

Вы можете использовать функцию pulldata("@json") для извлечения определенных значений из объекта JSON, созданного функцией JavaScript. Подробнее см. Получить значение из JSON.

Иногда, особенно при использовании JavaScript для доступа к веб-сервисам и защищенным сервисам ArcGIS, вам может понадобиться доступ к свойствам устройства и пользователя. Вы можете использовать функцию pulldata("@property"), чтобы извлекать информацию об устройствах, с которых заполняется запрос, а также о пользователях, от имени которых это происходит. Подробнее см. Свойства устройства и пользователя.

Подсказка:

Для пространственных и атрибутивных запросов к векторным слоям ArcGIS рассмотрите возможность использования функции pulldata("@layer") вместо pulldata("@javascript"). Синтаксис pulldata("@layer") специально разработан для запросов векторного слоя и поддерживается для общедоступных опросов. Для получения дополнительной информации см. Запрос к векторному слою.

Повторы

Можно передать все значения из одного повтора в ваши функции JavaScript. Функция pulldata("@javascript") поддерживает два стиля применения для извлечения значений из повтора. Тот, что будет использоваться, зависит от того, хотите ли вы, чтобы ваша функция JavaScript взаимодействовала с одним полем или со многими полями в повторе.

Если вопрос из повтора передается в качестве параметра функции, то функция JavaScript получает массив значений из указанного вопроса следующим образом:

pulldata("@javascript", "yourJSFile.js", "yourFunction", ${question1})

Если имя повтора передается в качестве параметра функции, функция JavaScript получает параметр в виде массива строк всех значений в повторе следующим образом:

pulldata("@javascript", "yourJSFile.js", "yourFunction", ${repeat1}, "question1")

Каждый из них создает объект JSON с отдельными вопросами, как свой свойства этого объекта.

Примечание:

Доступ к значениям в повторах с помощью pulldata("@javascript") не поддерживается в веб-приложении Survey123. Вы можете собирать значения для одного вопроса в повторе в веб-приложении, используя join() для преобразования списка значений в строку, разделенную символами, и разбиения значений в функции JavaScript.

Как в Survey123 версии 3.14 пустые значения, передаваемые в функцию JavaScript, теперь могут привести к возврату undefined или null. Поэтому вам следует написать функции JavaScript, чтобы учесть возможность наличия значения undefined.

Известные ограничения

Ниже приведены известные ограничения при использовании функций JavaScript в формах опроса:

  • Document Object Model (DOM) не поддерживается.
  • Среды JQuery, Ember и Angular не поддерживаются.
  • У вас нет доступа к локальным файлам.
  • Асинхронные вызовы не поддерживаются.
  • Функции JavaScript поддерживаются только в формах, заполненных пользователями в той же организации, что и автор формы.
  • Функции JavaScript не поддерживаются для общедоступных опросов.
  • Функция pulldata("@javascript") не может вызываться внутри функции pulldata("@json") в веб-приложении Survey123.