fix: 🐛 Filter rows based on the formatted value

Earlier filtering was done based on the original value of the cell, but
formatters could change the display value
This commit is contained in:
Faris Ansari 2018-11-29 13:19:56 +05:30
parent 33f7ab9c25
commit ec08d75261
4 changed files with 12 additions and 6 deletions

File diff suppressed because one or more lines are too long

View File

@ -792,6 +792,8 @@ export default class CellManager {
contentHTML = customFormatter(cell.content, row, cell.column, data);
}
cell.html = contentHTML;
if (this.options.treeView && !(isHeader || isFilter) && cell.indent !== undefined) {
const nextRow = this.datamanager.getRow(cell.rowIndex + 1);
const addToggle = nextRow && nextRow.meta.indent > cell.indent;

View File

@ -1,4 +1,4 @@
import { isNumber } from './utils';
import { isNumber, stripHTML } from './utils';
export default function filterRows(rows, filters) {
let filteredRowIndices = [];
@ -30,7 +30,7 @@ function getFilterMethod(filter) {
contains(keyword, cells) {
return cells
.filter(cell => {
const hay = String(cell.content || '').toLowerCase();
const hay = String(stripHTML(cell.html) || '').toLowerCase();
const needle = (keyword || '').toLowerCase();
return !needle || hay.includes(needle);
})
@ -40,7 +40,7 @@ function getFilterMethod(filter) {
greaterThan(keyword, cells) {
return cells
.filter(cell => {
const value = Number(cell.content);
const value = Number(stripHTML(cell.html));
return value > keyword;
})
.map(cell => cell.rowIndex);
@ -49,7 +49,7 @@ function getFilterMethod(filter) {
lessThan(keyword, cells) {
return cells
.filter(cell => {
const value = Number(cell.content);
const value = Number(stripHTML(cell.html));
return value < keyword;
})
.map(cell => cell.rowIndex);
@ -58,7 +58,7 @@ function getFilterMethod(filter) {
range(rangeValues, cells) {
return cells
.filter(cell => {
const value = Number(cell.content);
const value = Number(stripHTML(cell.html));
return value >= rangeValues[0] && value <= rangeValues[1];
})
.map(cell => cell.rowIndex);

View File

@ -134,3 +134,7 @@ export function uniq(arr) {
export function numberSortAsc(a, b) {
return a - b;
};
export function stripHTML(html) {
return html.replace(/<[^>]*>/g, '');
};