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