From 315c0670d0ff3ea8a594a128afb84e42f2196127 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Wed, 24 Jul 2024 13:52:34 +0200 Subject: [PATCH] improved multi column filter #855 --- packages/datalib/src/GridDisplay.ts | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/packages/datalib/src/GridDisplay.ts b/packages/datalib/src/GridDisplay.ts index 70656e76..9a6f34e5 100644 --- a/packages/datalib/src/GridDisplay.ts +++ b/packages/datalib/src/GridDisplay.ts @@ -214,14 +214,14 @@ export abstract class GridDisplay { } if (this.baseTableOrView && this.config.multiColumnFilter) { - try { - const condition = parseFilter(this.config.multiColumnFilter, 'string'); - if (condition) { - const orCondition: CompoudCondition = { - conditionType: 'or', - conditions: [], - }; - for (const column of this.baseTableOrView.columns) { + const orCondition: CompoudCondition = { + conditionType: 'or', + conditions: [], + }; + for (const column of this.baseTableOrView.columns) { + try { + const condition = parseFilter(this.config.multiColumnFilter, getFilterType(column.dataType)); + if (condition) { orCondition.conditions.push( _.cloneDeepWith(condition, (expr: Expression) => { if (expr.exprType == 'placeholder') { @@ -230,12 +230,13 @@ export abstract class GridDisplay { }) ); } - if (orCondition.conditions.length > 0) { - conditions.push(orCondition); - } + } catch (err) { + // skip for this column + continue; } - } catch (err) { - console.warn(err.message); + } + if (orCondition.conditions.length > 0) { + conditions.push(orCondition); } } @@ -482,6 +483,7 @@ export abstract class GridDisplay { this.setConfig(cfg => ({ ...cfg, filters: {}, + multiColumnFilter: null, })); this.reload(); }