From 1415fdc380b369717186856de2ced3d621d73d37 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Fri, 28 Jan 2022 09:54:34 -0500 Subject: [PATCH] SearchKit - Fix selecting operators and values in clauses Fixes dev/core#3046 which was caused by incomplete refactoring in https://github.com/civicrm/civicrm-core/pull/22604 --- .../crmSearchCondition.component.js | 38 +++++++++++++++---- .../crmSearchAdmin/crmSearchCondition.html | 4 +- .../crmSearchInput/boolean.html | 4 +- .../crmSearchTasks/crmSearchInput/date.html | 6 +-- .../crmSearchInput/entityRef.html | 4 +- .../crmSearchTasks/crmSearchInput/float.html | 4 +- .../crmSearchInput/integer.html | 4 +- .../crmSearchTasks/crmSearchInput/select.html | 4 +- .../crmSearchTasks/crmSearchInput/text.html | 4 +- 9 files changed, 48 insertions(+), 24 deletions(-) diff --git a/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.component.js b/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.component.js index c30f72e7e7..2e112b6120 100644 --- a/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.component.js +++ b/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.component.js @@ -7,10 +7,10 @@ clause: '<', format: '<', optionKey: '<', - offset: '@' + offset: '<' }, templateUrl: '~/crmSearchAdmin/crmSearchCondition.html', - controller: function ($scope, $element, searchMeta) { + controller: function ($scope) { var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), ctrl = this; this.operators = {}; @@ -30,6 +30,30 @@ } } + function getValue() { + return ctrl.clause[1 + ctrl.offset]; + } + + function setValue(val) { + ctrl.clause[1 + ctrl.offset] = val; + } + + // Getter/setter for use with ng-model + this.getSetOperator = function(op) { + if (arguments.length) { + setOperator(op); + } + return getOperator(); + }; + + // Getter/setter for use with ng-model + this.getSetValue = function(val) { + if (arguments.length) { + setValue(val); + } + return getValue(); + }; + // Return a list of operators allowed for the current field this.getOperators = function() { var field = ctrl.field || {}, @@ -74,13 +98,13 @@ } // Change multi/single value to/from an array var shouldBeArray = _.includes(['IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN'], getOperator()); - if (!_.isArray(ctrl.clause[ctrl.offset + 1]) && shouldBeArray) { - ctrl.clause[ctrl.offset + 1] = []; - } else if (_.isArray(ctrl.clause[ctrl.offset + 1]) && !shouldBeArray) { - ctrl.clause[ctrl.offset + 1] = ''; + if (!_.isArray(getValue()) && shouldBeArray) { + setValue([]); + } else if (_.isArray(getValue()) && !shouldBeArray) { + setValue(''); } if (_.includes(['BETWEEN', 'NOT BETWEEN'], getOperator())) { - ctrl.clause[ctrl.offset + 1].length = 2; + getValue().length = 2; } } }; diff --git a/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.html b/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.html index e58bac413c..f1c149de3a 100644 --- a/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.html +++ b/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.html @@ -1,2 +1,2 @@ - - + + diff --git a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/boolean.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/boolean.html index 61ed9000e6..597071979e 100644 --- a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/boolean.html +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/boolean.html @@ -1,8 +1,8 @@ -
+
-
+
diff --git a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html index 29d89573e5..f5c7508be3 100644 --- a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html @@ -1,5 +1,5 @@
- @@ -10,8 +10,8 @@
- - + +
diff --git a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/entityRef.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/entityRef.html index 731e8df9ad..eabd9d72b9 100644 --- a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/entityRef.html +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/entityRef.html @@ -1,6 +1,6 @@ -
+
-
+
diff --git a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/float.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/float.html index f34a1184a9..e6da4f7c9f 100644 --- a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/float.html +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/float.html @@ -1,6 +1,6 @@ -
+
-
+
diff --git a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/integer.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/integer.html index 3f480c2b14..d578956db5 100644 --- a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/integer.html +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/integer.html @@ -1,6 +1,6 @@ -
+
-
+
diff --git a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/select.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/select.html index b46e8014b3..c98500db37 100644 --- a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/select.html +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/select.html @@ -1,9 +1,9 @@
-
+
-
+
diff --git a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/text.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/text.html index 3718a11da7..71a043d276 100644 --- a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/text.html +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/text.html @@ -1,6 +1,6 @@ -
+
-
+
-- 2.25.1