Перейти к содержимому
Документация
Конструктор модулейВеб-интерфейсAPI

Runtime

Работа с ресурсами интерфейса, события рабочего процесса, условная видимость элементов и состояние интерфейса.

Runtime отвечает за поведение самого интерфейса во время работы: чтение и запись ресурсов, события рабочего процесса, условную видимость элементов и общее состояние. Все возможности доступны через фасад Engine.api.ui и Engine.api.visibility.

Оформление (темы, цвета, языки и переводы) вынесено на отдельную страницу UI.

Ресурсы интерфейса

Ресурсы — это поля, в которые пользователь вводит данные для сценария. К каждому обращаются по имени.

Прочитать значение ресурса

Engine.api.ui.getResource(имя) — возвращает текущее значение ресурса.

const res = Engine.api.ui.getResource('userName');
if (res.success) console.log(res.data);

Записать значение в ресурс

Engine.api.ui.setResource(имя, значение) — устанавливает значение ресурса и обновляет соответствующий элемент интерфейса.

Engine.api.ui.setResource('userName', 'Иван');

Получить все ресурсы сразу

Engine.api.ui.getAllResources() — возвращает список всех ресурсов интерфейса с их именами и текущими значениями.

const res = Engine.api.ui.getAllResources();
res.data.forEach(r => console.log(r.name, '=', r.value));

Узнать свойства ресурса

Engine.api.ui.getResourceInfo(имя) — возвращает подробную информацию о ресурсе: значение, видимость, доступность, обязательность заполнения.

const res = Engine.api.ui.getResourceInfo('apiKey');
console.log(res.data.visible, res.data.disabled);

Ресурсы и переменные — это разное

Значения ресурсов интерфейса и переменные выполняющегося сценария хранятся отдельно. Чтобы читать и записывать переменные внутри работающего сценария, используйте Engine.

События рабочего процесса

Интерфейс генерирует события в ключевые моменты работы со сценарием. На них можно подписаться.

СобытиеКогда возникает
workflow:startПользователь запустил сценарий
workflow:stopСценарий остановлен
workflow:resetФорма сброшена
form:submitОтправлена форма
state:changedИзменилось состояние рабочего процесса
data:updatedОбновились собранные данные

Подписаться на событие

Engine.api.ui.on(событие, обработчик) — подписывается на событие. В обработчик приходят данные события.

Engine.api.ui.on('workflow:start', (payload) => {
  console.log('Данные формы:', payload.data);
});

Отписаться от события

Engine.api.ui.off(событие, обработчик) — отписывается от события.

Отправить собственное событие

Engine.api.ui.emit(событие, данные) — генерирует собственное событие, удобно для обмена сигналами внутри интерфейса.

Engine.api.ui.emit('myPanel:opened', { tab: 'settings' });
Engine.api.ui.on('myPanel:opened', (d) => console.log(d.tab));

Запуск и остановка из кода

Помимо кнопок с data-action, рабочим процессом можно управлять программно:

Engine.api.ui.startWorkflow(); // собрать данные формы и запустить
Engine.api.ui.stopWorkflow();  // остановить

Условная видимость

Механизм условной видимости показывает или скрывает элементы в зависимости от значений ресурсов. Например, поле «Прокси» появляется, только если включён переключатель «Использовать прокси».

Добавить условие показа элемента

Engine.api.visibility.addCondition(идентификаторЭлемента, условие) — добавляет условие показа элемента.

Условие — объект: какой ресурс отслеживать, оператор сравнения и значение.

Поддерживаемые операторы: equals, notEquals, in, notIn, contains, notContains, greaterThan, lessThan, greaterOrEqual, lessOrEqual, empty, notEmpty, checked, unchecked.

Engine.api.visibility.addCondition('proxyField', {
  resourceId: 'useProxy',
  operator: 'checked'
});

Убрать условие показа

Engine.api.visibility.removeCondition(идентификаторЭлемента) — удаляет условие для элемента.

Посмотреть все условия

Engine.api.visibility.getConditions() — возвращает все заданные условия.

Задать и прочитать значение для условий

Engine.api.visibility.setResourceValue(идентификаторРесурса, значение) и Engine.api.visibility.getResourceValue(идентификаторРесурса) — задают или читают значение ресурса, влияющего на видимость (используется механизмом условий).

Пересчитать видимость

Engine.api.visibility.refresh() — принудительно пересчитывает видимость всех элементов. Полезно после массового изменения значений.

Engine.api.visibility.setResourceValue('useProxy', true);
Engine.api.visibility.refresh();

Состояние интерфейса

Получить сводное состояние

Engine.api.ui.getState() — возвращает сводное состояние интерфейса: текущая тема, язык и значения элементов.

const res = Engine.api.ui.getState();
console.log(res.data.theme, res.data.language);

Пересобрать интерфейс

Engine.api.ui.refresh() — пересобирает динамические части интерфейса (подсказки, списки, видимость). Вызывайте после того, как вручную добавили элементы на страницу.