Hi, I am using a kendo UI grid and have multiple filters for status - closed, cancelled, finished. In order for me to remove one of the filters and not see the extra 'and' logic in html above the grid, I have to make the method call for removal twice or click the 'x' to remove the filter twice. I am not sure what is causing this behavior and any help will be appreciated.
Here is the method call:
var newfilter = removeFilter(existingFilters, $(param).attr('data-field'), $(param).attr('data-operator'), $(param).attr('data-value'));
Here is the removeFilter method:
function removeFilter(filter, field, operator, value) {
if (filter == null)
return [];
for (var i = 0; i < filter.length; i++) {
if (filter[i].filters != null && filter[i].filters.length >= 0) {
if (filter[i].filters.length == 0) {
filter.splice(i, 1);
return removeFilter(filter, field, operator, value);
}
filter[i].filters = removeFilter(filter[i].filters, field, operator, value);
}
else {
if (filter[i].field == field && filter[i].operator == operator && filter[i].value.toString() == value) {
filter.splice(i, 1);
return removeFilter(filter, field, operator, value);
}
}
}
return filter;
}
Here is the html method to display the filter:
function gridFilter(gridSelector, filter) {
if (!filter) return '';
var html = '';
if (filter.filters) {
for (var i = 0; i < filter.filters.length; i++) {
if (filter.logic && i > 0)
{
html += '<span class="op">' + filter.logic + '</span>';
}
if ($.isArray(filter.filters[i].filters))
html += gridFilter(gridSelector, filter.filters[i]);
else
html += '<span class="param" data-field="' + filter.filters[i].field + '" data-operator="' + filter.filters[i].operator + '" data-value="' + filter.filters[i].value + '">' + formatField(gridSelector, filter.filters[i].field) + ' ' + formatOperator(filter.filters[i].operator) + ' ' + formatValue(filter.filters[i].value) + '<span class="remove">×</span></span>';
}
}
return html;
}
Thanks!
Kann