-
Notifications
You must be signed in to change notification settings - Fork 90
/
filterRules.tsx
28 lines (27 loc) · 1.14 KB
/
filterRules.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { createFilterRules } from "../common";
import { ComponentType } from "nussknackerUi/HttpService";
import { ComponentsFiltersModel } from "./filters";
export const filterRules = createFilterRules<ComponentType, ComponentsFiltersModel>({
NAME: (row, value) => {
const text = value?.toString().toLowerCase().trim();
if (!text?.length) return true;
const segments = text.split(/\s/);
return segments.every((segment) => row["name"]?.toLowerCase().includes(segment));
},
GROUP: (row, value) => !value?.length || [].concat(value).some((f) => row["componentGroupName"]?.includes(f)),
CATEGORY: (row, value) => !value?.length || [].concat(value).some((f) => row["categories"]?.includes(f)),
USAGES: (row, values = []) => {
return [].concat(values).every((value) => {
if (value === 0) {
return row["usageCount"] === 0;
}
if (value > 0) {
return row["usageCount"] >= value;
}
if (value < 0) {
return row["usageCount"] < Math.abs(value);
}
return true;
});
},
});