From df88f71dd6b9ae67ceec81844c5e891028600df8 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Wed, 24 Nov 2021 11:59:22 -0500 Subject: [PATCH] SearchKit - Fix selecting HAVING operator Fixes dev/core#2954 by gracefully handling field values when no field exists --- .../ang/crmSearchAdmin/crmSearchClause.component.js | 12 +++++------- .../crmSearchInput/crmSearchInputVal.component.js | 7 ++++--- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.component.js b/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.component.js index 25b3e0a0a2..de886f38eb 100644 --- a/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.component.js +++ b/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.component.js @@ -62,17 +62,15 @@ } this.getField = function(expr) { - if (!meta[expr]) { - meta[expr] = searchMeta.parseExpr(expr).args[0]; + if (!(expr in meta)) { + meta[expr] = _.findWhere(searchMeta.parseExpr(expr).args, {type: 'field'}); } - return meta[expr].field; + return meta[expr] && meta[expr].field; }; this.getOptionKey = function(expr) { - if (!meta[expr]) { - meta[expr] = _.findWhere(searchMeta.parseExpr(expr).args, {type: 'field'}); - } - return meta[expr].suffix ? meta[expr].suffix.slice(1) : 'id'; + var field = ctrl.getField(expr) || {}; + return field.suffix ? field.suffix.slice(1) : 'id'; }; this.addGroup = function(op) { diff --git a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js index 1e19729a71..99205c45c8 100644 --- a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js @@ -14,13 +14,14 @@ ctrl = this; this.$onInit = function() { - var rendered = false; + var rendered = false, + field = this.field || {}; ctrl.dateRanges = CRM.crmSearchTasks.dateRanges; - ctrl.entity = ctrl.field.fk_entity || ctrl.field.entity; + ctrl.entity = field.fk_entity || field.entity; this.ngModel.$render = function() { ctrl.value = ctrl.ngModel.$viewValue; - if (!rendered && ctrl.field.input_type === 'Date') { + if (!rendered && field.input_type === 'Date') { setDateType(); } rendered = true; -- 2.25.1