Можно использовать функцию 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.