[Enhancement] : [Table widget] Adding filters (#4130)

* added does not contains filter

* added isEmpty and isNotEmpty filter

* added contains filter logic in custom-filter.js

* converting row value to string for comparison in equal and not equal filters
This commit is contained in:
Manish Kushare 2022-10-07 09:31:36 +05:30 committed by GitHub
parent 9392b0a189
commit 6b0e9409f5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 9 deletions

View file

@ -105,10 +105,13 @@ export function Filter(props) {
<SelectSearch
options={[
{ name: 'contains', value: 'contains' },
{ name: 'does not contains', value: 'doesNotContains' },
{ name: 'matches', value: 'matches' },
{ name: 'does not match', value: 'nl' },
{ name: 'equals', value: 'equals' },
{ name: 'does not equal', value: 'ne' },
{ name: 'is empty', value: 'isEmpty' },
{ name: 'is not empty', value: 'isNotEmpty' },
{ name: 'greater than', value: 'gt' },
{ name: 'less than', value: 'lt' },
{ name: 'greater than or equals', value: 'gte' },
@ -124,13 +127,15 @@ export function Filter(props) {
/>
</div>
<div className="col">
<input
type="text"
value={filter.value.value}
placeholder="value"
className="form-control"
onChange={(e) => filterValueChanged(index, e.target.value)}
/>
{['isEmpty', 'isNotEmpty'].includes(filter.value.operation) || (
<input
type="text"
value={filter.value.value}
placeholder="value"
className="form-control"
onChange={(e) => filterValueChanged(index, e.target.value)}
/>
)}
</div>
<div className="col-auto">
<button

View file

@ -1,11 +1,11 @@
export default function customFilter(rows, columnIds, filterValue) {
try {
if (filterValue.operation === 'equals') {
return rows.filter((row) => row.values[columnIds[0]] === filterValue.value);
return rows.filter((row) => row.values[columnIds[0]].toString() === filterValue.value);
}
if (filterValue.operation === 'ne') {
return rows.filter((row) => row.values[columnIds[0]] !== filterValue.value);
return rows.filter((row) => row.values[columnIds[0]].toString() !== filterValue.value);
}
if (filterValue.operation === 'matches') {
@ -35,6 +35,30 @@ export default function customFilter(rows, columnIds, filterValue) {
if (filterValue.operation === 'lte') {
return rows.filter((row) => row.values[columnIds[0]] <= filterValue.value);
}
if (filterValue.operation === 'doesNotContains') {
return rows.filter(
(row) => !row.values[columnIds[0]].toString().toLowerCase().includes(filterValue.value.toLowerCase())
);
}
if (filterValue.operation === 'isEmpty') {
return rows.filter((row) => {
if (!row.values[columnIds[0]]) {
return row;
}
});
}
if (filterValue.operation === 'isNotEmpty') {
return rows.filter((row) => {
if (row.values[columnIds[0]]) {
return row;
}
});
}
if (filterValue.operation === 'contains') {
return rows.filter((row) =>
row.values[columnIds[0]].toString().toLowerCase().includes(filterValue.value.toLowerCase())
);
}
let value = filterValue.value;
if (typeof value === 'string') {