Найти тему
Logonok

Настройки действий на лету

Иногда возникает необходимость в изменении свойств атрибутов прямо во время редактирования объекта. Например, нужно показать атрибут только в том случае, если другой атрибут имеет определенное значение.

Отслеживаемый атрибут не выбран
Отслеживаемый атрибут не выбран
Отслеживаемый атрибут выбран
Отслеживаемый атрибут выбран

В декларативном фреймворке Evado динамическое изменение свойств атрибутов классов реализовано через настройки действий, которые зависят от текущих данных объекта в момент его редактирования.

Вкладка в атрибуте класса
Вкладка в атрибуте класса

Настройки создаются для конкретного атрибута и могут содержать условия для следующих действий:

  • Показать (show) - показать атрибут при выполнении условия, иначе скрыть.
  • Требовать (require) - сделать атрибут обязательным при выполнении условия, иначе необязательный.
  • Активировать (enable) - сделать атрибут доступным для редактирования при выполнении условия, иначе только для чтения.
  • Значение (value) - установить атрибуту заданное значение при выполнении условия.

Условие действия задается в формате JSON. Нормализованный шаблон условия имеет формат ["оператор", ..."операнды"]. Например, условие ["notEmpty","attrName"] выполнится, если атрибут с кодовым именем attrName имеет не пустое значение. Количество и тип операндов зависят от оператора. Список операторов можно найти здесь.

Для каждого действия задается JSON-объект условий его применения
Для каждого действия задается JSON-объект условий его применения
Условие равенства может быть записано в нормальном формате ["=","attrName","value"] или в сокращенном - {"attrName":"value"}.

Оператор может быть логическим. Тогда каждый его операнд - это отдельное условие. Например, ["and", {"attr1": true}, [">","attr2", 5]].

Для настройки действия «Значение» формат определен как
["значение", ["оператор", ..."операнды"]].

Обратите внимание, что настройки действий могут только увеличивать ограничения заданные в метаданных. Например, если в метаданных задано, что атрибут только для чтения, то настройка активности не сделает его редактируемым.

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

В атрибуте представления можно задать свои настройки действий, которые переопределят те, что заданы в атрибуте класса.

Настройку действий можно задать и для группы. Она будет влиять на все входящие в группу атрибуты. Если у атрибута уже есть настройки, то они будут скомбинированы с групповыми. Для настройки обязательности через логическое ИЛИ, для настройки активности через логическое И.

Рабочий пример настроек действий можно посмотреть в демо-приложении в модуле «Офис» меню «Настройки действий».