Наибольшая часть динамики в интерфейсе форм и страниц достигается за счет отображения или скрытия определённого контента и виджетов в зависимости от условий или действий пользователя. Иногда кнопку необходимо отобразить либо после выполнения определённых действий или расчетов, либо при наличии у пользователя соответствующих прав. Иногда, наоборот, необходимо скрыть блоки формы, которые ещё не нужны или заполнены до конца. Существует множество вариантов использования динамики на формах, и в системе есть возможности для их реализации.
Для управления видимостью виджетов предусмотрена настройка Видимость, которую можно найти в настройках практически любого виджета на вкладке Системные.
Настройка Видимость представляет из себя переключатель, который может иметь одно из пяти значений. Этих значений достаточно, чтобы покрыть любую потребность при построении сложных интерфейсов. Рассмотрим их подробнее.
Эти базовые опции позволяют всегда показывать или всегда скрывать виджет, независимо от каких-либо условий. По умолчанию для всех виджетов установлено значение Показывать всегда.
При выборе значения видимости Показать по условию можно привязать к настройкам видимости поле из контекста формы или страницы. По умолчанию поле не выбрано, и в настройках отображается надпись <Не установлено>. При нажатии на нее появляется список доступных для привязки полей. Если в контексте доступны приложения, то их можно развернуть, чтобы выбрать одно из свойств приложения (без ограничений по уровню вложенности).
После выбора поля, к которому привязано отображение виджета, в настройках можно увидеть его название. Его значение проверяется при рендере виджета на странице или форме для определения того, должен ли виджет быть отображен. Если данное поле имеет значение true или приводимое к true, то виджет будет отображен, в обратном случае — скрыт.
Рассмотрим простой пример.
Создадим поле контекста типа Выбор «да/нет» (boolean) c кодом showButton:
Добавим на форму виджет Кнопка, для которой зададим настройку видимости Показать по условию. Привяжем отображение виджета к созданному полю контекста:
Также добавим и вынесем на форму поле Название.
В настройках виджета Строка формы перейдем на вкладку События и зададим событие при изменении значения. Создадим новую функцию, например, nameChanged, и перейдем к ее редактированию, нажав на кнопку Открыть.
В функции мы будем проверять текущее значение строки с названием и, в зависимости от его длины, будем менять значение поля контекста showButton. Если длина строки более пяти символов, то showButton будет присваиваться значение true, иначе — false:
Используя привязку значения видимости к отдельному полю контекста и меняя значение этого поля через сценарии, можно установить сложные, многосоставные условия отображения виджета для реализации любых настроек видимости.
Рассмотрим, как будет работать отображение кнопки на форме, настроенной выше. Теперь, пока текст в поле Название не более пяти символов длиной, созданная кнопка будет скрыта:
Однако как только длина текста достигает шести символов, условие видимости возвращает true, и кнопка появляется на форме:
Опция Скрыть по условию работает по тому же принципу, что и предыдущая, но наоборот. Виджет скрывается, когда связанное поле контекста имеет значение или может быть приведено к значению true, в обратном случае виджет отображается.
Например, создадим в контексте еще одно поле типа Выбор «да/нет» и назовем его Скрыть кнопку (hideButton):
Разместим его в шаблоне формы:
В настройках видимости кнопки выберем Скрыть по условию и привяжем ее отображение к созданному полю Скрыть кнопку:
Теперь когда свойство Скрыть кнопку имеет значение true кнопка скрывается:
Для того чтобы отображать содержимое формы или страницы только для определенных групп пользователей и скрыть для всех остальных (например, в целях ограничения по правам), предусмотрена опция видимости Показать для групп. При выборе данной опции появляется поле для выбора групп пользователей:
Чтобы выбрать нужную группу пользователей, начните вводить ее название в поле и выберите группу из выпадающего списка или нажмите на значок лупы и выберите группу в открывшемся окне:
Список уже выбранных групп пользователей отображается под полем ввода:
Как сделать динамическое отображение полей/виджетов со сложным условием
Наибольшая часть динамики в интерфейсе форм и страниц достигается за счет отображения или скрытия определённого контента и виджетов в зависимости от условий или действий пользователя. Иногда кнопку необходимо отобразить либо после выполнения определённых действий или расчетов, либо при наличии у пользователя соответствующих прав. Иногда, наоборот, необходимо скрыть блоки формы, которые ещё не нужны или заполнены до конца. Существует множество вариантов использования динамики на формах, и в системе есть возможности для их реализации.
Для управления видимостью виджетов предусмотрена настройка Видимость, которую можно найти в настройках практически любого виджета на вкладке Системные.
Настройка Видимость представляет из себя переключатель, который может иметь одно из пяти значений. Этих значений достаточно, чтобы покрыть любую потребность при построении сложных интерфейсов. Рассмотрим их подробнее.
Показывать всегда. Скрывать всегда
Эти базовые опции позволяют всегда показывать или всегда скрывать виджет, независимо от каких-либо условий. По умолчанию для всех виджетов установлено значение Показывать всегда.
Показать по условию
При выборе значения видимости Показать по условию можно привязать к настройкам видимости поле из контекста формы или страницы. По умолчанию поле не выбрано, и в настройках отображается надпись <Не установлено>. При нажатии на нее появляется список доступных для привязки полей. Если в контексте доступны приложения, то их можно развернуть, чтобы выбрать одно из свойств приложения (без ограничений по уровню вложенности).
После выбора поля, к которому привязано отображение виджета, в настройках можно увидеть его название. Его значение проверяется при рендере виджета на странице или форме для определения того, должен ли виджет быть отображен. Если данное поле имеет значение
true
или приводимое кtrue
, то виджет будет отображен, в обратном случае — скрыт.Рассмотрим простой пример.
Создадим поле контекста типа Выбор «да/нет» (boolean) c кодом
showButton
:Добавим на форму виджет Кнопка, для которой зададим настройку видимости Показать по условию. Привяжем отображение виджета к созданному полю контекста:
Также добавим и вынесем на форму поле Название.
В настройках виджета Строка формы перейдем на вкладку События и зададим событие при изменении значения. Создадим новую функцию, например,
nameChanged
, и перейдем к ее редактированию, нажав на кнопку Открыть.В функции мы будем проверять текущее значение строки с названием и, в зависимости от его длины, будем менять значение поля контекста
showButton
. Если длина строки более пяти символов, тоshowButton
будет присваиваться значениеtrue
, иначе —false
:async function nameChanged(): Promise<void> { Context.data.showButton = Context.data.name && Context.data.name.length > 5 ? true : false; }
Используя привязку значения видимости к отдельному полю контекста и меняя значение этого поля через сценарии, можно установить сложные, многосоставные условия отображения виджета для реализации любых настроек видимости.
Рассмотрим, как будет работать отображение кнопки на форме, настроенной выше. Теперь, пока текст в поле Название не более пяти символов длиной, созданная кнопка будет скрыта:
Однако как только длина текста достигает шести символов, условие видимости возвращает
true
, и кнопка появляется на форме:Скрыть по условию
Опция Скрыть по условию работает по тому же принципу, что и предыдущая, но наоборот. Виджет скрывается, когда связанное поле контекста имеет значение или может быть приведено к значению
true
, в обратном случае виджет отображается.Например, создадим в контексте еще одно поле типа Выбор «да/нет» и назовем его Скрыть кнопку (
hideButton
):Разместим его в шаблоне формы:
В настройках видимости кнопки выберем Скрыть по условию и привяжем ее отображение к созданному полю Скрыть кнопку:
Теперь когда свойство Скрыть кнопку имеет значение
true
кнопка скрывается:Если значение поля
false
, кнопка отображается:Показать для групп
Для того чтобы отображать содержимое формы или страницы только для определенных групп пользователей и скрыть для всех остальных (например, в целях ограничения по правам), предусмотрена опция видимости Показать для групп. При выборе данной опции появляется поле для выбора групп пользователей:
Чтобы выбрать нужную группу пользователей, начните вводить ее название в поле и выберите группу из выпадающего списка или нажмите на значок лупы и выберите группу в открывшемся окне:
Список уже выбранных групп пользователей отображается под полем ввода: