Теряется ширина колонок при закрытии открытии вкладки

Наблюдаю следующее поведение:

  1. Таблица имеет две колонки. Планирую одну сделать узкой, вторую широкой.
    Указываю следующие значения expandRatio
    image
  2. Открываю экран просмотра - вижу ожидаемую ширину колонок.
    image
  3. Закрываю вкладку. Открываю снова.
  4. Ширина столбцов сбрасывается на дефолт
    image

Лечится только чисткой таблицы ui_setting в БД

Версия JMix
image

Это что то ожидаемое или бага?

Дополню:
Если указать ширину в пикселях колонке width, то все работает как ожидается.

Я вижу, что запись в ui_settings содержит информацию с пикселями:
[{“groupProperties”:[],“id”:“sprDocTypesesTable”,“columns”:[{“id”:“code”,“width”:300,“visible”:true},{“id”:“name”,“width”:150,“visible”:true}]}]

В случае с expandRatio - подобная запись информацию не содержит.
Возможно это связано с наблюдаемым поведением.

Добрый день, Максим!

Поведение больше похоже на баг. Спасибо, что сообщили о проблеме! Создал issue: Table UI settings should support column expandRatio · Issue #1607 · jmix-framework/jmix · GitHub.

В принципе можно обойти проблему, установив свой делегат в ScreenSettingsFacet:

@Install(to = "settingsFacet", subject = "applySettingsDelegate")
private void settingsFacetApplySettingsDelegate(ScreenSettingsFacet.SettingsContext settingsContext) {
    settingsContext.getScreenSettings().getSettings("filesTable", TableSettings.class)
            .ifPresent(settings -> {
                TableSettingsBinder tableSettingsBinder = getApplicationContext().getBean(TableSettingsBinder.class);
                // Apply all settings
                tableSettingsBinder.applySettings(filesTable, new SettingsWrapperImpl(settings));
                // Apply expandRatio if possible
                List<TableSettings.ColumnSettings> columns = settings.getColumns();
                for (TableSettings.ColumnSettings columnSettings : columns) {
                    if (columnSettings.getWidth() == null) {
                        // reset expandRatio
                        Table.Column<File> column = filesTable.getColumn(columnSettings.getId());
                        float expandRatio = column.getExpandRatio();
                        column.setExpandRatio(-1);
                        column.setExpandRatio(expandRatio);
                    }
                }
            });
}
1 симпатия