Atlas-4066: UI:- Fix Attribute Filter: 'is null' and 'is not null' does not work for user-defined properties.
Signed-off-by: nixonrodrigues <nixon@apache.org>
diff --git a/dashboardv2/public/js/views/search/QueryBuilderView.js b/dashboardv2/public/js/views/search/QueryBuilderView.js
index dd38cc7..49e9f20 100644
--- a/dashboardv2/public/js/views/search/QueryBuilderView.js
+++ b/dashboardv2/public/js/views/search/QueryBuilderView.js
@@ -193,10 +193,10 @@
/* __customAttributes */
if (isSystemAttr && attrObj.name === "__customAttributes") {
obj["input"] = function(rule) {
- return rule.operator.nb_inputs ? that.getUserDefineInput() : null
+ return (rule && rule.operator && rule.operator.nb_inputs) ? that.getUserDefineInput() : null
}
obj["valueGetter"] = function(rule) {
- if (rule.operator.type === "contains") {
+ if (rule && rule.operator && rule.operator.type === "contains") {
var $el = rule.$el.find('.rule-value-container'),
key = $el.find("[data-type='key']").val(),
val = $el.find("[data-type='value']").val();
@@ -205,13 +205,15 @@
} else {
return new Error("Key & Value is Required");
}
+ } else {
+ return [] // in CommonviewFunction.js value is set to "" for object;
}
}
obj["valueSetter"] = function(rule) {
- if (!rule.$el.hasClass("user-define")) {
+ if (rule && !rule.$el.hasClass("user-define")) {
rule.$el.addClass("user-define");
}
- if (rule.value && !(rule.value instanceof Error)) {
+ if (rule && rule.value && rule.value.length && !(rule.value instanceof Error)) {
var $el = rule.$el.find('.rule-value-container'),
value = rule.value.split("=");
if (value) {
@@ -220,7 +222,6 @@
}
}
}
-
obj.operators = ['contains', 'is_null', 'not_null'];
return obj;
}
diff --git a/dashboardv3/public/js/views/search/QueryBuilderView.js b/dashboardv3/public/js/views/search/QueryBuilderView.js
index 9e14891..c9011f2 100644
--- a/dashboardv3/public/js/views/search/QueryBuilderView.js
+++ b/dashboardv3/public/js/views/search/QueryBuilderView.js
@@ -193,10 +193,10 @@
/* __customAttributes */
if (isSystemAttr && attrObj.name === "__customAttributes") {
obj["input"] = function(rule) {
- return rule.operator.nb_inputs ? that.getUserDefineInput() : null
+ return (rule && rule.operator && rule.operator.nb_inputs) ? that.getUserDefineInput() : null
}
obj["valueGetter"] = function(rule) {
- if (rule.operator.type === "contains") {
+ if (rule && rule.operator && rule.operator.type === "contains") {
var $el = rule.$el.find('.rule-value-container'),
key = $el.find("[data-type='key']").val(),
val = $el.find("[data-type='value']").val();
@@ -205,13 +205,15 @@
} else {
return new Error("Key & Value is Required");
}
+ } else {
+ return [] // in CommonviewFunction.js value is set to "" for object;
}
}
obj["valueSetter"] = function(rule) {
- if (!rule.$el.hasClass("user-define")) {
+ if (rule && !rule.$el.hasClass("user-define")) {
rule.$el.addClass("user-define");
}
- if (rule.value && !(rule.value instanceof Error)) {
+ if (rule && rule.value && rule.value.length && !(rule.value instanceof Error)) {
var $el = rule.$el.find('.rule-value-container'),
value = rule.value.split("=");
if (value) {
@@ -220,7 +222,6 @@
}
}
}
-
obj.operators = ['contains', 'is_null', 'not_null'];
return obj;
}