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