31 lines
932 B
Plaintext
31 lines
932 B
Plaintext
export default class Filters {
|
|
filters;
|
|
constructor(context) {
|
|
this.filters = context.filters;
|
|
}
|
|
set(value, filterBy) {
|
|
const parsed = this.parse(filterBy);
|
|
this.filters.update(store => {
|
|
const filter = { filterBy: parsed.fn, value: value, identifier: parsed.identifier };
|
|
store = store.filter(item => { return item.identifier !== parsed.identifier && item.value.length > 0; });
|
|
store.push(filter);
|
|
return store;
|
|
});
|
|
}
|
|
remove() {
|
|
this.filters.update(store => store = []);
|
|
}
|
|
parse(filterBy) {
|
|
if (typeof (filterBy) === 'string') {
|
|
return {
|
|
fn: (row) => row[filterBy],
|
|
identifier: filterBy.toString()
|
|
};
|
|
}
|
|
return {
|
|
fn: filterBy,
|
|
identifier: filterBy.toString()
|
|
};
|
|
}
|
|
}
|