Available only in PRO Edition
Since 7.1
Компонент доступен для пользователей Webix Pro.
Webix Filter - это удобный, интерактивный инструмент для фильтрации наборов данных. Компонент Filter позволяет фильтровать данные, устанавливать список правил (в зависимости от типа фильтруемых данных) или исключать определенные данные из фильтрации.
var data = new webix.DataCollection({
data:grid_data
});
webix.ui({
view:"filter",
mode:"text",
field:"title",
data: data,
on:{
onChange(){
const filter = this.getFilterFunction();
data.filter(obj => filter(obj));
}
}
});
Основные свойства:
"number"
);Related sample: Filter: Basic Initialization
Компонент Filter содержит три элемента:
Доступные правила фильтрации отображаются в выпадающем списке. Список правил зависит от значения свойства type:
правила для типа данных "number"
правила для типа данных "text"
правила для типа данных "date"
Тип вводимого значения определяется свойством field и соответствует определенному элементу набора данных. Фильтрация выполняется в соответствии с выбранным правилом:
{
view:"filter",
mode:"number",
field:"year",
// ...
}
Вы можете настраивать внешний вид элементов внутри списка с помощью свойства template:
{
view:"filter",
mode:"number",
field:"year",
template:function(obj){
var value = obj.year;
var color = value >= 1980 ? "green" : "red";
return "<span style='color:"+color+"'>"+value+"</span>";
},
// ...
}
Related sample: Filter: Templates
Чтобы задать свой набор правил фильтрации, используйте свойство conditions. Вы можете изменить существующий набор правил или полностью переопределить его.
Изменяя правила фильтрации вы можете:
"greater", "less"
, и т.п.);{
view:"filter",
mode:"number",
field:"rating",
conditions:[
// готовый набор условий и инпутов
"equal", "contains",
// пользовательские условия и инпуты
{ id:"between", value:"Between", batch:"rangeslider", handler:function(a, b){
return a >= b[0] && a <= b[1];
}},
// для ярлыков со статическим значением используй view:"template"
{ id:"above", value:"Above", batch:"template", handler:function(a){
return a > 50;
}},
{ id:"below", value:"Below", batch:"template", handler:function(a){
return a <= 50;
}},
// если инпут не нужен, используй batch:"none"
{ id:"top", value:"Top rated", batch:"none", handler:function(a){
return a <= 80;
}}
]
// ...
}
Созданное правило должно содержать следующие свойства:
Массив inputs по умолчанию содержит следующие элементы:
inputs: [ "text", "datepicker", "daterangepicker", "none"];
Если описанных выше видов инпутов не достаточно, вы можете создать свой инпут и добавить его в массив готовых.
Для создания инпута:
view:"filter",
inputs: [
// готовые инпуты
"text", "none",
// пользовательские инпуты
{ view:"rangeslider", max:100, min:0, step:1, moveTitle:false, batch:"rangeslider",
on:{
onChange:function(){
const filter = this.queryView("filter", "parent");
filter.applyFilter();
}
}}
]
Если вместо инпута выхотите задать статичный ярлык, используйте view:"template"
:
{
template:"some average value e.g. 50",
batch:"template",
borderless:true,
css:{"line-height":"28px"}
}
Если инпут не нужен, определите input как "none"
.
Related sample: Filter: Custom Inputs
Вы можете локализовать компонент Filter в соответствии с особенностями определенного языка. По умолчанию используется локаль en-US. Название кнопок и правил, используемых для фильтра хранятся в объекте webix.i18n.filter:
webix.i18n.filter = {
less: "less",
lessOrEqual: "less or equal",
greater: "greater",
greaterOrEqual: "greater or equal",
contains: "contains",
notContains: "not contains",
equal: "equal",
notEqual: "not equal",
beginsWith: "begins with",
notBeginsWith: "not begins with",
endsWith: "ends with",
notEndsWith: "not ends with",
between: "between",
notBetween: "not between"
};
Существуют 2 способа применить пользовательскую локаль:
Применить локаль с помощью метода setLocale.