settings

Фасет settings сохраняет и восстанавливает настройки визуальных компонентов для текущего пользователя. Поддерживаются следующие компоненты:

  • dataGrid, treeDataGrid - фасет сохраняет порядок и ширину колонок, а также параметры сортировки.

  • details, genericFilter - фасет сохраняет состояние открытия.

  • simplePagination - фасет сохраняет выбранный размер страницы, если itemsPerPageVisible имеет значение true.

Базовое использование

При добавлении на экран с атрибутом auto="true" фасет управляет настройками всех поддерживаемых компонентов экрана, имеющих идентификаторы:

<facets>
    <settings auto="true"/>
</facets>

Для управления настройками конкретного компонента используйте вложенные элементы component, например:

<facets>
    <settings>
        <component componentId="citiesDataGrid"/>
    </settings>
</facets>

Чтобы исключить какой-либо компонент, используйте auto="true" для фасета и enabled="false" для компонента:

<facets>
    <settings auto="true">
        <component componentId="hobbiesDataGrid" enabled="false"/>
    </settings>
</facets>

Настройки хранятся в основном хранилище данных в таблице FLOWUI_USER_SETTINGS в формате JSON. Вы можете управлять сохраненными настройками, открыв сущность flowui_UserSettingsItem в Инспекторе сущностей.

Обработчики

Чтобы сгенерировать заглушку обработчика в Jmix Studio, используйте вкладку Handlers панели инспектора Jmix UI, или команду Generate Handler, доступную на верхней панели контроллера экрана и через меню CodeGenerate (Alt+Insert / Cmd+N).

applySettingsDelegate

applySettingsDelegate вызывается перед обработчиком события ReadyEvent экрана.

@ViewComponent
private JmixCheckbox checkbox;

@ViewComponent
private SettingsFacet settings;

@Install(to = "settings", subject = "applySettingsDelegate")
private void settingsApplySettingsDelegate(final SettingsFacet.SettingsContext settingsContext) {
    settings.applySettings();
    Optional<Boolean> value = settingsContext.getViewSettings().getBoolean("checkbox", "value");
    checkbox.setValue(value.orElse(Boolean.FALSE));
}

applyDataLoadingSettingsDelegate

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

saveSettingsDelegate

Обработчик saveSettingsDelegate вызывается перед обработчиком события DetachEvent экрана.

@ViewComponent
private JmixCheckbox checkbox;

@ViewComponent
private SettingsFacet settings;

@Install(to = "settings", subject = "saveSettingsDelegate")
private void settingsSaveSettingsDelegate(final SettingsFacet.SettingsContext settingsContext) {
    settingsContext.getViewSettings().put("testCheckbox", "value", checkbox.getValue());
    settings.saveSettings();
}