@webtypen/webframez-core 0.2.10 → 0.2.11

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) {
@@ -265,11 +290,12 @@ class Datatable {
265
290
  value = { $ne: null };
266
291
  break;
267
292
  case "==":
268
- value = valueClean;
293
+ value = this.formatFilterEntryVal(entry, filterEl);
269
294
  break;
270
295
  case "!=":
271
- if (valueClean !== undefined) {
272
- value = { $ne: valueClean };
296
+ const temp = this.formatFilterEntryVal(entry, filterEl);
297
+ if (temp !== undefined) {
298
+ value = { $ne: temp };
273
299
  }
274
300
  break;
275
301
  case "$gt":
@@ -284,20 +310,7 @@ class Datatable {
284
310
  break;
285
311
  default:
286
312
  if (valueClean !== undefined) {
287
- if (entryType === "number" || entryType === "numeric" || entryType === "currency") {
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
- }
313
+ value = this.formatFilterEntryVal(entry, filterEl, { regex: true });
301
314
  }
302
315
  break;
303
316
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webtypen/webframez-core",
3
- "version": "0.2.10",
3
+ "version": "0.2.11",
4
4
  "description": "The core package of the typescript based webframez (web-framework) by webtypen.de",
5
5
  "homepage": "https://webtypen.de/",
6
6
  "license": "MIT",
@@ -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 {};
@@ -279,11 +302,12 @@ export class Datatable {
279
302
  value = { $ne: null };
280
303
  break;
281
304
  case "==":
282
- value = valueClean;
305
+ value = this.formatFilterEntryVal(entry, filterEl);
283
306
  break;
284
307
  case "!=":
285
- if (valueClean !== undefined) {
286
- value = { $ne: valueClean };
308
+ const temp = this.formatFilterEntryVal(entry, filterEl);
309
+ if (temp !== undefined) {
310
+ value = { $ne: temp };
287
311
  }
288
312
  break;
289
313
  case "$gt":
@@ -298,17 +322,7 @@ export class Datatable {
298
322
  break;
299
323
  default:
300
324
  if (valueClean !== undefined) {
301
- if (entryType === "number" || entryType === "numeric" || entryType === "currency") {
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
- }
325
+ value = this.formatFilterEntryVal(entry, filterEl, { regex: true });
312
326
  }
313
327
  break;
314
328
  }