В AppMaster есть четыре элемента, предназначенных для пользовательского выбора из списка.
- Select
- Dropdown
- Select (enum)
- Relselect
Элементы на примере редактора веб-приложений:
Select
Этот элемент предназначен для выбора из статического списка вариантов, которые задаются в редакторе.
После переноса элемента select на канвас, появится всплывающее окно, где можно определить будет ли select принимать одно значение или несколько.
Чтобы добавить и редактировать опции для выбора, нужно нажать на элемент и перейти во вкладку Option.
Dropdown
Dropdown похож на select, но отличается тем, что не сохраняет выбранное значение. Обычно Dropdown запускает какой-либо бизнес-процесс при клике на одну из опций.
Чтобы добавить и редактировать опции для выбора, нужно нажать на элемент и перейти во вкладку Option.
Select (enum)
Select (enum) предназначен для выбора значения из enum. При создании этого элемента появится окно, где нужно выбрать источник данных (один из существующих enum).
Relselect
Relselect используется для выбора значений из записей в базе данных. При создании нужно выбрать источник данных из списка моделей. После выбора источника появится возможность выбрать поле для отображения.
Для примера создадим RelSelect с источником данных User и полем Login.
Чтобы RelSelect работал, нужно передать в него данные с помощью БП.
Бизнес-процесс должен получать данные с помощью блока GET и передавать их в RelSelect с помощью блока RelSelect Update Properties.
Для примера загрузим в RelSelect всех администраторов приложения. Для этого используется блок Server Request GET /user. Задается значение по умолчанию для входного поля groups равное admin. Так в выходном поле data мы получим только пользователей из группы Admin. Эти данные нужно передать в RelSelect Update Properties.
Для того, чтобы в RelSelect Update Properties появилось поле для данных, нужно указать Component ID.
Теперь в RelSelect будут отображаться логины всех администраторов приложения. Выбор, сделанный пользователем, можно в дальнейшем использовать в БП. Для этого есть поле selected, в котором хранятся выбранные значения.
Представим, что есть модель данных task, связанная с пользователями. С помощью RelSelect можно отобразить только те задачи, которые связаны с выбранным пользователем.
Добавим таблицу task на страницу, и вернемся в БП, который настроен для RelSelect. В нем нужно создать еще один БП на триггер onChange, который будет обновлять данные в таблице в соответствии с выбором в RelSelect.
В нем с помощью блока RelSelect Get Properties получаем выбранного пользователя. Раскрыть его можно с помощью Expand User, ID которого нужно передать в блок Server Request GET /task, затем передать полученные данные в блок Table Update Data.
Теперь при выборе пользователя в RelSelect в таблице task будут отображаться записи связанные с выбранным пользователем.