@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 = valueClean;
296
+ value = this.formatFilterEntryVal(entry, filterEl);
269
297
  break;
270
298
  case "!=":
271
- if (valueClean !== undefined) {
272
- value = { $ne: valueClean };
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
- 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
- }
316
+ value = this.formatFilterEntryVal(entry, filterEl, { regex: true });
301
317
  }
302
318
  break;
303
319
  }
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.12",
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 {};
@@ -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 = valueClean;
309
+ value = this.formatFilterEntryVal(entry, filterEl);
283
310
  break;
284
311
  case "!=":
285
- if (valueClean !== undefined) {
286
- value = { $ne: valueClean };
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
- 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
- }
329
+ value = this.formatFilterEntryVal(entry, filterEl, { regex: true });
312
330
  }
313
331
  break;
314
332
  }