@adminforth/universal-search 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build.log +1 -1
- package/dist/index.js +11 -11
- package/index.ts +25 -26
- package/package.json +1 -1
package/build.log
CHANGED
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { AdminForthPlugin } from 'adminforth';
|
|
10
|
+
import { AdminForthPlugin, Filters } from 'adminforth';
|
|
11
11
|
export default class UniversalSearchPlugin extends AdminForthPlugin {
|
|
12
12
|
constructor(options) {
|
|
13
13
|
super(options, import.meta.url);
|
|
@@ -91,23 +91,22 @@ export default class UniversalSearchPlugin extends AdminForthPlugin {
|
|
|
91
91
|
columns.forEach(col => {
|
|
92
92
|
const searchBy = (col.searchBy === 'labelOnly' ? 'keyOnly' : col.searchBy) || 'valueOnly';
|
|
93
93
|
const addFilter = (field) => {
|
|
94
|
-
let operator;
|
|
95
|
-
let value;
|
|
96
94
|
if (col.exact) {
|
|
97
95
|
if (col.caseSensitive) {
|
|
98
|
-
|
|
99
|
-
value = term;
|
|
96
|
+
sub.push(Filters.LIKE(field, term));
|
|
100
97
|
}
|
|
101
98
|
else {
|
|
102
|
-
|
|
103
|
-
value = term;
|
|
99
|
+
sub.push(Filters.EQ(field, term));
|
|
104
100
|
}
|
|
105
101
|
}
|
|
106
102
|
else {
|
|
107
|
-
|
|
108
|
-
|
|
103
|
+
if (col.caseSensitive) {
|
|
104
|
+
sub.push(Filters.LIKE(field, term));
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
sub.push(Filters.ILIKE ? Filters.ILIKE(field, term) : { field, operator: 'ilike', value: term });
|
|
108
|
+
}
|
|
109
109
|
}
|
|
110
|
-
sub.push({ field, operator, value });
|
|
111
110
|
};
|
|
112
111
|
if (searchBy === 'valueOnly')
|
|
113
112
|
addFilter(col.name);
|
|
@@ -120,7 +119,8 @@ export default class UniversalSearchPlugin extends AdminForthPlugin {
|
|
|
120
119
|
});
|
|
121
120
|
if (!sub.length)
|
|
122
121
|
return [];
|
|
123
|
-
|
|
122
|
+
console.log('UniversalSearchPlugin: transformed filter', f, '=>', sub);
|
|
123
|
+
return [Filters.OR(sub)];
|
|
124
124
|
}
|
|
125
125
|
return [f];
|
|
126
126
|
});
|
package/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AdminForthPlugin, AdminForthResource, IAdminForth, AdminForthDataTypes } from 'adminforth';
|
|
1
|
+
import { AdminForthPlugin, AdminForthResource, IAdminForth, AdminForthDataTypes, Filters } from 'adminforth';
|
|
2
2
|
import { PluginOptions, UniversalSearchColumnConfig } from './types.js';
|
|
3
3
|
|
|
4
4
|
export default class UniversalSearchPlugin extends AdminForthPlugin {
|
|
@@ -75,33 +75,32 @@ export default class UniversalSearchPlugin extends AdminForthPlugin {
|
|
|
75
75
|
}
|
|
76
76
|
if (f.field === virtualFieldName) {
|
|
77
77
|
const term = (f.value || '').toString().trim();
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if (col.caseSensitive) {
|
|
87
|
-
operator = 'like';
|
|
88
|
-
value = term;
|
|
89
|
-
} else {
|
|
90
|
-
operator = 'eq';
|
|
91
|
-
value = term;
|
|
92
|
-
}
|
|
78
|
+
if (!term) return [];
|
|
79
|
+
const sub: any[] = [];
|
|
80
|
+
columns.forEach(col => {
|
|
81
|
+
const searchBy = (col.searchBy === 'labelOnly' ? 'keyOnly' : col.searchBy) || 'valueOnly';
|
|
82
|
+
const addFilter = (field: string) => {
|
|
83
|
+
if (col.exact) {
|
|
84
|
+
if (col.caseSensitive) {
|
|
85
|
+
sub.push(Filters.LIKE(field, term));
|
|
93
86
|
} else {
|
|
94
|
-
|
|
95
|
-
value = `${term}`;
|
|
87
|
+
sub.push(Filters.EQ(field, term));
|
|
96
88
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
89
|
+
} else {
|
|
90
|
+
if (col.caseSensitive) {
|
|
91
|
+
sub.push(Filters.LIKE(field, term));
|
|
92
|
+
} else {
|
|
93
|
+
sub.push((Filters as any).ILIKE ? (Filters as any).ILIKE(field, term) : { field, operator: 'ilike', value: term });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
if (searchBy === 'valueOnly') addFilter(col.name);
|
|
98
|
+
else if (searchBy === 'keyOnly') addFilter(`${col.name}__key`);
|
|
99
|
+
else if (searchBy === 'both') { addFilter(col.name); addFilter(`${col.name}__key`); }
|
|
100
|
+
});
|
|
101
|
+
if (!sub.length) return [];
|
|
102
|
+
console.log('UniversalSearchPlugin: transformed filter', f, '=>', sub);
|
|
103
|
+
return [Filters.OR(sub)];
|
|
105
104
|
}
|
|
106
105
|
return [f];
|
|
107
106
|
});
|