From 42a972b6dcd40a56a60ceef96f4f3d076f280959 Mon Sep 17 00:00:00 2001 From: CYBAI Date: Wed, 6 May 2020 16:31:33 +0900 Subject: [PATCH 1/2] Refactor `filterByNumber` to return the result of comparator directly Doing the same operation of comparator might be more straightforward and we don't need to declare a `valid` variable. --- .../src/filter.js | 35 +++++-------------- 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/packages/react-bootstrap-table2-filter/src/filter.js b/packages/react-bootstrap-table2-filter/src/filter.js index 7aad77bc3..4df32805b 100644 --- a/packages/react-bootstrap-table2-filter/src/filter.js +++ b/packages/react-bootstrap-table2-filter/src/filter.js @@ -39,55 +39,36 @@ export const filterByNumber = _ => ( ) => ( data.filter((row) => { if (number === '' || !comparator) return true; - let valid = true; let cell = _.get(row, dataField); + if (customFilterValue) { cell = customFilterValue(cell, row); } switch (comparator) { case EQ: { - if (cell != number) { - valid = false; - } - break; + return cell == number; } case GT: { - if (cell <= number) { - valid = false; - } - break; + return cell > number; } case GE: { - if (cell < number) { - valid = false; - } - break; + return cell >= number; } case LT: { - if (cell >= number) { - valid = false; - } - break; + return cell < number; } case LE: { - if (cell > number) { - valid = false; - } - break; + return cell <= number; } case NE: { - if (cell == number) { - valid = false; - } - break; + return cell != number; } default: { console.error('Number comparator provided is not supported'); - break; + return true; } } - return valid; }) ); From b8ac424e4e3d37565995ef635663baca63e8ab22 Mon Sep 17 00:00:00 2001 From: CYBAI Date: Wed, 6 May 2020 16:34:00 +0900 Subject: [PATCH 2/2] Return the filter function directly in filterFactory --- .../src/filter.js | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/packages/react-bootstrap-table2-filter/src/filter.js b/packages/react-bootstrap-table2-filter/src/filter.js index 4df32805b..924e00982 100644 --- a/packages/react-bootstrap-table2-filter/src/filter.js +++ b/packages/react-bootstrap-table2-filter/src/filter.js @@ -189,25 +189,19 @@ export const filterByArray = _ => ( }; export const filterFactory = _ => (filterType) => { - let filterFn; switch (filterType) { - case FILTER_TYPE.TEXT: - case FILTER_TYPE.SELECT: - filterFn = filterByText(_); - break; case FILTER_TYPE.MULTISELECT: - filterFn = filterByArray(_); - break; + return filterByArray(_); case FILTER_TYPE.NUMBER: - filterFn = filterByNumber(_); - break; + return filterByNumber(_); case FILTER_TYPE.DATE: - filterFn = filterByDate(_); - break; + return filterByDate(_); + case FILTER_TYPE.TEXT: + case FILTER_TYPE.SELECT: default: - filterFn = filterByText(_); + // Use `text` filter as default filter + return filterByText(_); } - return filterFn; }; export const filters = (data, columns, _) => (currFilters, clearFilters = {}) => {