Можно использовать функцию pulldata("@javascript") для вызова функций JavaScript, что позволяет использовать передовые методы и логику, которые не доступны при работе только с XLSForm.
Пользовательские файлы JavaScript должны храниться в папке scripts в директории опроса.
Базовый синтаксис
Вы можете вызывать пользовательские функции JavaScript для возврата значений. Используйте следующий синтаксис для вызова пользовательских функций JavaScript с помощью функции pulldata("@javascript"):
pulldata("@javascript", "yourJSFile.js", "yourFunction", "parameter1", "parameter2")
В приведенном выше примере функция JavaScript ожидает два параметра, но может быть добавлено любое количество параметров функции.
Другие вопросы в опросе можно использовать в качестве параметров для функций pulldata("@javascript"). В следующем примере ответ на вопрос project_code передается в функцию projectLookup:
pulldata("@javascript", "projects.js", "projectLookup", ${project_code})
Примечание:
Передача вопросов типа геоточка, георассировка или геоформа не поддерживается в Survey123 Studio и Survey123 Mobile в качестве параметров для функций pulldata("@javascript").
Вы можете использовать функцию pulldata("@json") для извлечения определенных значений из объекта JSON, созданного функцией JavaScript. Подробнее см. Получить значение из JSON.
Иногда, особенно при использовании JavaScript для доступа к веб-сервисам и защищенным сервисам ArcGIS, вам может понадобиться доступ к свойствам устройства и пользователя. Вы можете использовать функцию pulldata("@property"), чтобы извлекать информацию об устройствах, с которых заполняется запрос, а также о пользователях, от имени которых это происходит. Подробнее см. в Свойства устройства, пользователя и опроса.
Подсказка:
Для пространственных и атрибутивных запросов к векторным слоям ArcGIS рассмотрите возможность использования функции pulldata("@layer") вместо pulldata("@javascript"). Синтаксис pulldata("@layer") специально разработан для запросов векторного слоя и поддерживается для общедоступных опросов. Для получения дополнительной информации см. Запрос к векторному слою.
Повторы
Примечание:
В этом разделе описывается функциональность, доступная только в Survey123 Connect и полевых приложениях Survey123. Эта функциональность недоступна в Survey123 Studio или Survey123 Mobile.
Можно передать все значения из одного повтора в ваши функции 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.
Инструменты-скрипты
Примечание:
В этом разделе описываются функции, доступные только в Survey123 Connect. Эта функциональность недоступна в Survey123 Studio.
Вы можете управлять функциями JavaScript и редактировать их на вкладке Скрипты в Survey123 Connect. На этой вкладке вы можете создать файл JavaScript, просмотреть код и протестировать функцию. Эта вкладка не является полной заменой интегрированной среды разработки (IDE), которая может обеспечивать проверку кода и анализ передового опыта, чтобы помочь в разработке функций JavaScript, но предназначена для помощи в интеграции этих функций в Survey123.
Следующие инструменты доступны в меню на вкладке Скрипты в Survey123 Connect:
- Файлы скриптов — показывает все файлы JavaScript в папке scripts вашего опроса. Выберите файл для просмотра и редактирования.
- Открыть папку скриптов — запускает файловый браузер в том месте, где находится папка scripts вашего опроса.
- Файл нового скрипта — создает файл скрипта в папке scripts вашего опроса. Введите имя файла и щелкните Создать.
- Выбрать функцию - Выделяет первую функцию в открытом файле и представляет параметры для тестирования.
- Сохранить — сохраняет изменения в открытом файле.
- Запустить внешний редактор — запускает системную IDE JavaScript по умолчанию с открытым файлом.
Щелкните инструмент Выбрать функцию, чтобы проверить поведение первой функции в файле, введя значения для каждого параметра и просмотрев результат. Закончив работу с функцией, вы можете скопировать представленный здесь оператор pulldata и вставить его в файл XLSForm. Если вы вошли в свою организацию, щелкните правой кнопкой мыши любой из параметров и при необходимости щелкните Вставить токен.