display filter condition correctly and make sure text filter to be String

This commit is contained in:
Chun-MingChen
2018-04-04 17:58:19 +08:00
parent 377534512a
commit f54c1f77b4
6 changed files with 38 additions and 24 deletions
@@ -22,7 +22,7 @@ const columns = [{
text: 'Product Name'
}, {
dataField: 'quality',
text: 'Product Quailty',
text: 'Product Quality',
formatter: cell => selectOptions[cell],
filter: selectFilter({
options: selectOptions,
@@ -34,7 +34,7 @@ const columns = [{
}];
const handleClick = () => {
qualityFilter('0');
qualityFilter(0);
};
const sourceCode = `\
@@ -57,7 +57,7 @@ const columns = [{
text: 'Product Name'
}, {
dataField: 'quality',
text: 'Product Quailty',
text: 'Product Quality',
formatter: cell => selectOptions[cell],
filter: selectFilter({
options: selectOptions,
@@ -69,7 +69,7 @@ const columns = [{
}];
const handleClick = () => {
qualityFilter('0');
qualityFilter(0);
};
export default () => (
@@ -27,7 +27,7 @@ const columns = [{
}];
const handleClick = () => {
nameFilter('0');
nameFilter(0);
};
const sourceCode = `\
@@ -55,7 +55,7 @@ const columns = [{
}];
const handleClick = () => {
nameFilter('0');
nameFilter(0);
};
export default () => (
@@ -42,6 +42,9 @@ class NumberFilter extends Component {
if (getFilter) {
getFilter((filterVal) => {
this.setState(() => ({ isSelected: (filterVal !== '') }));
this.numberFilterComparator.value = filterVal.comparator;
this.numberFilter.value = filterVal.number;
onFilter(column, FILTER_TYPE.NUMBER)({
number: filterVal.number,
comparator: filterVal.comparator
@@ -36,6 +36,8 @@ class SelectFilter extends Component {
if (getFilter) {
getFilter((filterVal) => {
this.setState(() => ({ isSelected: filterVal !== '' }));
this.selectInput.value = filterVal;
onFilter(column, FILTER_TYPE.SELECT)(filterVal);
});
}
+26 -18
View File
@@ -6,30 +6,37 @@ import { LIKE, EQ, NE, GT, GE, LT, LE } from './comparison';
export const filterByText = _ => (
data,
dataField,
{ filterVal = '', comparator = LIKE, caseSensitive },
{ filterVal: userInput = '', comparator = LIKE, caseSensitive },
customFilterValue
) =>
data.filter((row) => {
let cell = _.get(row, dataField);
if (customFilterValue) {
cell = customFilterValue(cell, row);
}
const cellStr = _.isDefined(cell) ? cell.toString() : '';
if (comparator === EQ) {
return cellStr === filterVal;
}
if (caseSensitive) {
return cellStr.includes(filterVal);
}
return cellStr.toLocaleUpperCase().indexOf(filterVal.toLocaleUpperCase()) !== -1;
});
) => {
// make sure filter value to be a string
const filterVal = userInput.toString();
return (
data.filter((row) => {
let cell = _.get(row, dataField);
if (customFilterValue) {
cell = customFilterValue(cell, row);
}
const cellStr = _.isDefined(cell) ? cell.toString() : '';
if (comparator === EQ) {
return cellStr === filterVal;
}
if (caseSensitive) {
return cellStr.includes(filterVal);
}
return cellStr.toLocaleUpperCase().indexOf(filterVal.toLocaleUpperCase()) !== -1;
})
);
};
export const filterByNumber = _ => (
data,
dataField,
{ filterVal: { comparator, number } },
customFilterValue
) =>
) => (
data.filter((row) => {
if (number === '' || !comparator) return true;
let valid = true;
@@ -81,7 +88,8 @@ export const filterByNumber = _ => (
}
}
return valid;
});
})
);
export const filterFactory = _ => (filterType) => {
let filterFn;
+1
View File
@@ -63,6 +63,7 @@ export default (Base, {
} = filter.props;
currFilters[dataField] = { filterVal, filterType, comparator, caseSensitive };
}
store.filters = currFilters;
if (this.isRemoteFiltering() || this.isRemotePagination()) {