From 2ff814fc3cf37db2b67bbca6bc547235a520c6a0 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Mon, 13 Dec 2021 11:18:25 -0500 Subject: [PATCH] SearchKit - Allow funcitons in WHERE clause --- .../ang/crmSearchAdmin/compose.html | 4 +- .../crmSearchClause.component.js | 5 ++ .../ang/crmSearchAdmin/crmSearchClause.html | 7 ++- .../crmSearchFunction.component.js | 6 +- .../ang/crmSearchAdmin/crmSearchFunction.html | 56 +++++++++---------- 5 files changed, 45 insertions(+), 33 deletions(-) diff --git a/ext/search_kit/ang/crmSearchAdmin/compose.html b/ext/search_kit/ang/crmSearchAdmin/compose.html index 6437a92b57..04f42d6956 100644 --- a/ext/search_kit/ang/crmSearchAdmin/compose.html +++ b/ext/search_kit/ang/crmSearchAdmin/compose.html @@ -39,7 +39,7 @@
- +
@@ -54,7 +54,7 @@
- +
diff --git a/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.component.js b/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.component.js index 558e4817b6..3140b0becc 100644 --- a/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.component.js +++ b/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.component.js @@ -7,6 +7,7 @@ clauses: '<', format: '@', op: '@', + allowFunctions: '<', skip: '<', label: '@', hideLabel: '@', @@ -78,6 +79,10 @@ return arg.suffix ? arg.suffix.slice(1) : 'id'; }; + this.hasFunction = function(expr) { + return expr.indexOf('(') > -1; + }; + this.addGroup = function(op) { ctrl.clauses.push([op, []]); }; diff --git a/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.html b/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.html index 4fc255e6eb..fc7384068b 100644 --- a/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.html +++ b/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.html @@ -15,12 +15,15 @@
- + + + +
- +
diff --git a/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js b/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js index 3fda35afe0..847c4c2d85 100644 --- a/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js +++ b/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js @@ -3,6 +3,7 @@ angular.module('crmSearchAdmin').component('crmSearchFunction', { bindings: { + mode: '@', expr: '=' }, require: { @@ -160,7 +161,10 @@ // Replace fake function "e" ctrl.expr = (ctrl.fnName === 'e' ? '' : ctrl.fnName) + '('; ctrl.expr += args.join(''); - ctrl.expr += ') AS ' + makeAlias(); + ctrl.expr += ')'; + if (ctrl.mode === 'select') { + ctrl.expr += ' AS ' + makeAlias(); + } } else { ctrl.expr = ctrl.args[0].value; } diff --git a/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html b/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html index 2983e106c7..4ffb4f1326 100644 --- a/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html +++ b/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html @@ -1,30 +1,30 @@ -
+ - - -
- - - - - - -
-
- - -
+
+ + +
+ + + + + + +
+
+ +
-- 2.25.1