Criteria

Criteria — это механизм выделения (изменения стиля) строки или ячейки списка при помощи фильтрации.

Базовым, абстрактным классом criteria является

IServ.UI.plugin.AbstractCriteria. Он содержит следующие параметры:
  • cls: string — наименование css — класса. По умолчанию можно не указывать, будет сгенерирован автоматически.
  • styles: any — объект с css-стилями. Например
    styles: {
        "font-size": "12px",
        "color": red
    }
    
  • filters:any[] — условие фильтрации для выделения. Применяется тоже синтаксис, что и в фильтрации грида

Наследниками класса IServ.UI.plugin.AbstractCriteria являются:

  • IServ.UI.Classic.plugin.RowCriteria —

    плагин для выделения строки grid’а

    {
        "xtype": "listviewgrid",
        ...
        plugins: [{
            ptype: 'rowcriteria',
            styles: {
                color: 'red'
            },
            filters: [{
                property: 'C_Name', // наименование колонки
                value: 'Вася'
            }]
        }]
    }
    
  • IServ.UI.Classic.plugin.CellCriteria — плагин для выделения ячейки grid’а
    {
        "xtype": "listviewgrid",
        ...
        columns:[{
            ...,
            plugins: [{
                ptype: 'cellcriteria',
                styles: {
                    color: 'red'
                },
                filters: [{
                    property: 'value', // тут нужно обязательно указывать значение value
                    value: 0
                }]
            }]
        }]
    }
    
Для cellcriteria  у фильтра, property всегда должен быть указан, как value, если нужно, чтобы фильтрация производилась по колонке.
Так же есть возможность выделения ячейки отфильтровав по свойствам записи. Для этого в параметре filters нужно указывать поля по которым произойдет фильтр.
...
filters: [{
   "property": "value",
   "value": "admin"
},{
   "property": "password",
   "value": "test"
}]
...

Доступна возможность инициализации функции как значение, например

{
    "xtype": "listviewgrid",
    ...
    columns:[{
        ...,
        plugins: [{
            ptype: 'cellcriteria',
            styles: {
                color: 'red'
            },
            filters: [{
                property: 'value',
                value: function() { // например нужно прочитать настройку
                    return Utilits.getConf('value'); 
                }
            }]
        }]
    }]
}
Criteria в modern
Плагин IServ.UI.Modern.ListItemCriteria также является наследником IServ.UI.plugin.AbstractCriteria и содержит тот же самый набор конфигураций, что и в classic
Пример:
xtype: 'listview',
plugins: [{
    type: 'listitemcriteria',
    styles: {
        color: 'red'
    },
    filters: [{
        property: 'status', // фильтрация должна производиться по полю которые указано в itemTpl
        value: '0'
    }]
}],
itemTpl: [
    '{message} {status}' // по status производится фильтрация
]
...

Form Criteria

Для дополнительной валидации при сохранении формы добавлен механизм criteria

Пример реализации:

...    
items: [{
            xtype: 'form',
            itemId: 'formpanel',
            header: false,
            defaults: {
                width: '100%',
                labelAlign: 'top',
                readOnly: true
            },
            flex: 1,
            scrollable: true,
            plugins: [{
                ptype: 'formcriteria',
                filters: [{
                    "property": "login",
                    "value": "user"
                }],
                message: "Ошибка сохранения"
            }],
...

Результатом будет невозможность сохранения формы если логин пользователя равен user

Print Friendly, PDF & Email

Добавить комментарий