добавляет внешний фильтр определённому столбцу или полю данных
object | HTMLElement|object | элемент или объект контрола Webix |
config | object | объект с настройками (должен включать в себя уникальный columnId) |
controller | object | объект с методами фильтра |
// регистрируем HTML поле как фильтр
grid.registerFilter(
document.getElementById("myfilter"),
{ columnId:"title" },
{
getValue:function(object){
return object.value;
},
setValue:function(object, value){
object.value = value;
}
}
);
// добавляем List
grid.registerFilter(
$$("myfilter"), // хранится как параметр 'list' в 'getValue'
{ columnId:"year" }, // столбец для фильтрования
{
getValue:function(list){
var selection = list.getSelectedId();
var item = list.getItem(selection)
var filterValue = item.filter;
return function(year){
return year > filterValue
}
}
}
);
В примере выше:
Во избежание несовместимостей, у каждого столбца/поля данных может быть только один фильтр (или внешний, или внутри хедера). Это значит, что каждый указанный columnId должен быть уникальным (любым уникальным ключом).
const table = $$("table");
table.registerFilter(
someControl,
{ columnId:"any" },
{
// getValue, setValue...
}
);
table.registerFilter(
someOtherControl,
{ columnId:"dates" },
{
// getValue, setValue...
}
);
Related sample: Datatable: Adding new filters
The primary filter config may also contain the following properties: - compare - defines a custom comparing function, optional. - prepare - defines a custom function for data pre-processing, optional.
Когда вы регистрируете поле ввода/компонент в качестве фильтра, вы можете передать контроллер последним аргументом. Объект содержит поля для управления фильтром:
Ниже представлен пример базового использования контроллера:
$$("grid").registerFilter(
$$("textField"),
{ columnId:"title" },
// определяет контроллер
{
getValue:function(view){
return view.getValue();
},
setValue:function(view, value){
view.setValue(value)
}
}
);
Related sample: Datatable: Register Input as Filter