@webtypen/webframez-core 0.2.10 → 0.2.12
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.
|
@@ -33,5 +33,6 @@ export declare class Datatable {
|
|
|
33
33
|
getFilter(req: Request): Promise<any>;
|
|
34
34
|
getColumns(req: Request): Promise<any>;
|
|
35
35
|
getOnPressLink(req: Request): Promise<any>;
|
|
36
|
+
private formatFilterEntryVal;
|
|
36
37
|
getFilterMatch(req: Request, searchOrFilter: any): Promise<any>;
|
|
37
38
|
}
|
|
@@ -239,6 +239,31 @@ class Datatable {
|
|
|
239
239
|
return this.onPressLink;
|
|
240
240
|
});
|
|
241
241
|
}
|
|
242
|
+
formatFilterEntryVal(entry, filterEl, options) {
|
|
243
|
+
const valueClean = entry.value !== undefined && entry.value !== "" ? entry.value : undefined;
|
|
244
|
+
const entryType = entry.type && entry.type.trim() !== "" ? entry.type : filterEl && filterEl.type ? filterEl.type : null;
|
|
245
|
+
let value = undefined;
|
|
246
|
+
if (entryType === "number" || entryType === "numeric" || entryType === "currency") {
|
|
247
|
+
value = parseFloat(valueClean.toString().replace(",", "."));
|
|
248
|
+
}
|
|
249
|
+
else if (entryType === "boolean") {
|
|
250
|
+
if (entry.value === "true") {
|
|
251
|
+
value = true;
|
|
252
|
+
}
|
|
253
|
+
else if (entry.value === "false") {
|
|
254
|
+
value = false;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
if (options && options.regex) {
|
|
259
|
+
value = new RegExp(valueClean, "i");
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
value = valueClean;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return value;
|
|
266
|
+
}
|
|
242
267
|
getFilterMatch(req, searchOrFilter) {
|
|
243
268
|
return __awaiter(this, void 0, void 0, function* () {
|
|
244
269
|
if (!searchOrFilter || Object.keys(searchOrFilter).length < 1) {
|
|
@@ -249,6 +274,9 @@ class Datatable {
|
|
|
249
274
|
for (let key in searchOrFilter) {
|
|
250
275
|
let value = undefined;
|
|
251
276
|
const entry = searchOrFilter[key];
|
|
277
|
+
if (!entry || typeof entry !== "object") {
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
252
280
|
const valueClean = entry.value !== undefined && entry.value !== "" ? entry.value : undefined;
|
|
253
281
|
const operator = entry.operator && entry.operator.trim() !== ""
|
|
254
282
|
? entry.operator
|
|
@@ -265,11 +293,12 @@ class Datatable {
|
|
|
265
293
|
value = { $ne: null };
|
|
266
294
|
break;
|
|
267
295
|
case "==":
|
|
268
|
-
value =
|
|
296
|
+
value = this.formatFilterEntryVal(entry, filterEl);
|
|
269
297
|
break;
|
|
270
298
|
case "!=":
|
|
271
|
-
|
|
272
|
-
|
|
299
|
+
const temp = this.formatFilterEntryVal(entry, filterEl);
|
|
300
|
+
if (temp !== undefined) {
|
|
301
|
+
value = { $ne: temp };
|
|
273
302
|
}
|
|
274
303
|
break;
|
|
275
304
|
case "$gt":
|
|
@@ -284,20 +313,7 @@ class Datatable {
|
|
|
284
313
|
break;
|
|
285
314
|
default:
|
|
286
315
|
if (valueClean !== undefined) {
|
|
287
|
-
|
|
288
|
-
value = parseFloat(valueClean.toString().replace(",", "."));
|
|
289
|
-
}
|
|
290
|
-
else if (entryType === "boolean") {
|
|
291
|
-
if (entry.value === "true") {
|
|
292
|
-
value = true;
|
|
293
|
-
}
|
|
294
|
-
else if (entry.value === "false") {
|
|
295
|
-
value = false;
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
value = new RegExp(valueClean, "i");
|
|
300
|
-
}
|
|
316
|
+
value = this.formatFilterEntryVal(entry, filterEl, { regex: true });
|
|
301
317
|
}
|
|
302
318
|
break;
|
|
303
319
|
}
|
package/package.json
CHANGED
|
@@ -251,6 +251,29 @@ export class Datatable {
|
|
|
251
251
|
return this.onPressLink;
|
|
252
252
|
}
|
|
253
253
|
|
|
254
|
+
private formatFilterEntryVal(entry: any, filterEl: any, options?: any) {
|
|
255
|
+
const valueClean = entry.value !== undefined && entry.value !== "" ? entry.value : undefined;
|
|
256
|
+
const entryType = entry.type && entry.type.trim() !== "" ? entry.type : filterEl && filterEl.type ? filterEl.type : null;
|
|
257
|
+
|
|
258
|
+
let value: any = undefined;
|
|
259
|
+
if (entryType === "number" || entryType === "numeric" || entryType === "currency") {
|
|
260
|
+
value = parseFloat(valueClean.toString().replace(",", "."));
|
|
261
|
+
} else if (entryType === "boolean") {
|
|
262
|
+
if (entry.value === "true") {
|
|
263
|
+
value = true;
|
|
264
|
+
} else if (entry.value === "false") {
|
|
265
|
+
value = false;
|
|
266
|
+
}
|
|
267
|
+
} else {
|
|
268
|
+
if (options && options.regex) {
|
|
269
|
+
value = new RegExp(valueClean, "i");
|
|
270
|
+
} else {
|
|
271
|
+
value = valueClean;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return value;
|
|
275
|
+
}
|
|
276
|
+
|
|
254
277
|
async getFilterMatch(req: Request, searchOrFilter: any) {
|
|
255
278
|
if (!searchOrFilter || Object.keys(searchOrFilter).length < 1) {
|
|
256
279
|
return {};
|
|
@@ -262,6 +285,10 @@ export class Datatable {
|
|
|
262
285
|
let value: any = undefined;
|
|
263
286
|
|
|
264
287
|
const entry = searchOrFilter[key];
|
|
288
|
+
if (!entry || typeof entry !== "object") {
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
|
|
265
292
|
const valueClean = entry.value !== undefined && entry.value !== "" ? entry.value : undefined;
|
|
266
293
|
const operator =
|
|
267
294
|
entry.operator && entry.operator.trim() !== ""
|
|
@@ -279,11 +306,12 @@ export class Datatable {
|
|
|
279
306
|
value = { $ne: null };
|
|
280
307
|
break;
|
|
281
308
|
case "==":
|
|
282
|
-
value =
|
|
309
|
+
value = this.formatFilterEntryVal(entry, filterEl);
|
|
283
310
|
break;
|
|
284
311
|
case "!=":
|
|
285
|
-
|
|
286
|
-
|
|
312
|
+
const temp = this.formatFilterEntryVal(entry, filterEl);
|
|
313
|
+
if (temp !== undefined) {
|
|
314
|
+
value = { $ne: temp };
|
|
287
315
|
}
|
|
288
316
|
break;
|
|
289
317
|
case "$gt":
|
|
@@ -298,17 +326,7 @@ export class Datatable {
|
|
|
298
326
|
break;
|
|
299
327
|
default:
|
|
300
328
|
if (valueClean !== undefined) {
|
|
301
|
-
|
|
302
|
-
value = parseFloat(valueClean.toString().replace(",", "."));
|
|
303
|
-
} else if (entryType === "boolean") {
|
|
304
|
-
if (entry.value === "true") {
|
|
305
|
-
value = true;
|
|
306
|
-
} else if (entry.value === "false") {
|
|
307
|
-
value = false;
|
|
308
|
-
}
|
|
309
|
-
} else {
|
|
310
|
-
value = new RegExp(valueClean, "i");
|
|
311
|
-
}
|
|
329
|
+
value = this.formatFilterEntryVal(entry, filterEl, { regex: true });
|
|
312
330
|
}
|
|
313
331
|
break;
|
|
314
332
|
}
|