You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by kb...@apache.org on 2019/10/09 14:33:29 UTC

[atlas] 02/03: ATLAS-3449: UI : Beta UI : Invalid Filter validation case for classification

This is an automated email from the ASF dual-hosted git repository.

kbhatt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/atlas.git

commit adfc526e386128dc8f572aae6093720d7954bd31
Author: kevalbhatt <kb...@apache.org>
AuthorDate: Wed Oct 9 19:46:31 2019 +0530

    ATLAS-3449: UI : Beta UI : Invalid Filter validation case for classification
---
 .../js/views/search/SearchDefaultLayoutView.js     | 118 +++++++++------------
 1 file changed, 52 insertions(+), 66 deletions(-)

diff --git a/dashboardv3/public/js/views/search/SearchDefaultLayoutView.js b/dashboardv3/public/js/views/search/SearchDefaultLayoutView.js
index ea10738..aa1f777 100644
--- a/dashboardv3/public/js/views/search/SearchDefaultLayoutView.js
+++ b/dashboardv3/public/js/views/search/SearchDefaultLayoutView.js
@@ -124,6 +124,8 @@ define(["require", "backbone", "utils/Globals", "hbs!tmpl/search/SearchDefaultLa
             initialize: function(options) {
                 _.extend(this.options, options);
                 this.hidenFilter = false;
+                this.tagAttributeLength = 0;
+                this.entityAttributeLength = 0;
             },
             bindEvents: function() {},
             onRender: function() {
@@ -138,34 +140,13 @@ define(["require", "backbone", "utils/Globals", "hbs!tmpl/search/SearchDefaultLa
                 var filters = CommonViewFunction.attributeFilter.extractUrl({ "value": isTag ? this.options.value.tagFilters : this.options.value.entityFilters, "formatDate": true }),
                     rules = filters.rules,
                     filtertype = isTag ? "tagFilters" : "entityFilters",
-                    that = this,
-                    col = [];
+                    that = this;
 
-                function getIdFromRuleObject(rule) {
-                    _.map(rule.rules, function(obj, key) {
-                        if (_.has(obj, "condition")) {
-                            return getIdFromRuleObject(obj);
-                        } else {
-                            return col.push(obj.id);
-                        }
-                    });
-                    return col;
-                }
                 filters.rules = _.filter(rules, function(obj, key) {
                     return obj.id != $(e.currentTarget).data("id");
                 });
                 if (filters) {
-                    var ruleUrl = CommonViewFunction.attributeFilter.generateUrl({ value: filters, formatedDateToLong: true });
-                    that.options.searchTableFilters[filtertype][isTag ? that.options.value.tag : that.options.value.type] = ruleUrl;
-                    //this.makeFilterButtonActive(filtertype);
-                    if (!isTag && that.options.value && that.options.value.type && that.options.searchTableColumns) {
-                        if (!that.options.searchTableColumns[that.options.value.type]) {
-                            that.options.searchTableColumns[that.options.value.type] = ["selected", "name", "owner", "description", "tag", "typeName"];
-                        }
-                        that.options.searchTableColumns[that.options.value.type] = _.sortBy(_.union(that.options.searchTableColumns[that.options.value.type], getIdFromRuleObject(filters)));
-                    }
-                } else {
-
+                    that.updateFilterOptions(filters, filtertype, isTag);
                 }
                 if (filters.rules.length == 0) {
                     if (isTag) {
@@ -262,101 +243,106 @@ define(["require", "backbone", "utils/Globals", "hbs!tmpl/search/SearchDefaultLa
                 if (that.options.value.tag) {
                     this.ui.classificationRegion.show();
                     // this.ui.entityRegion.hide();
-                    var attrObj = that.options.classificationDefCollection.fullCollection.find({ name: that.options.value.tag });
-                    if (attrObj) {
-                        attrObj = Utils.getNestedSuperTypeObj({
-                            data: attrObj.toJSON(),
+                    var attrTagObj = that.options.classificationDefCollection.fullCollection.find({ name: that.options.value.tag });
+                    if (attrTagObj) {
+                        attrTagObj = Utils.getNestedSuperTypeObj({
+                            data: attrTagObj.toJSON(),
                             collection: that.options.classificationDefCollection,
                             attrMerge: true,
                         });
+                        this.tagAttributeLength = attrTagObj.length;
                     }
                     this.renderQueryBuilder(_.extend({}, obj, {
                         tag: true,
                         type: false,
-                        attrObj: attrObj
+                        attrObj: attrTagObj
                     }), this.RQueryBuilderClassification);
                     this.ui.classificationName.html(that.options.value.tag);
                 }
                 if (that.options.value.type) {
                     this.ui.entityRegion.show();
-                    var attrObj = that.options.entityDefCollection.fullCollection.find({ name: that.options.value.type });
-                    if (attrObj) {
-                        attrObj = Utils.getNestedSuperTypeObj({
-                            data: attrObj.toJSON(),
+                    var attrTypeObj = that.options.entityDefCollection.fullCollection.find({ name: that.options.value.type });
+                    if (attrTypeObj) {
+                        attrTypeObj = Utils.getNestedSuperTypeObj({
+                            data: attrTypeObj.toJSON(),
                             collection: that.options.entityDefCollection,
                             attrMerge: true
                         });
+                        this.entityAttributeLength = attrTypeObj.length;
                     }
                     this.renderQueryBuilder(_.extend({}, obj, {
                         tag: false,
                         type: true,
-                        attrObj: attrObj
+                        attrObj: attrTypeObj
                     }), this.RQueryBuilderEntity);
 
                     this.ui.entityName.html(that.options.value.type);
                 }
             },
             okAttrFilterButton: function(e) {
-                // var isTag = this.attrModal.tag ? true : false, 
                 var isTag,
                     filtertype,
                     queryBuilderRef,
-                    col = [],
+                    isFilterValidate = true,
                     that = this;
 
                 if (this.options.value.tag) {
                     isTag = true;
                     filtertype = isTag ? "tagFilters" : "entityFilters";
-                    queryBuilderRef = this.RQueryBuilderClassification.currentView.ui.builder;
-                    searchAttribute();
-
+                    if (this.tagAttributeLength !== 0) {
+                        queryBuilderRef = this.RQueryBuilderClassification.currentView.ui.builder;
+                        searchAttribute();
+                    }
                 }
                 if (this.options.value.type) {
                     isTag = false;
                     filtertype = isTag ? "tagFilters" : "entityFilters";
-                    queryBuilderRef = this.RQueryBuilderEntity.currentView.ui.builder;
-                    searchAttribute();
-
-                }
-
-                function getIdFromRuleObject(rule) {
-                    _.map(rule.rules, function(obj, key) {
-                        if (_.has(obj, "condition")) {
-                            return getIdFromRuleObject(obj);
-                        } else {
-                            return col.push(obj.id);
-                        }
-                    });
-                    return col;
+                    if (this.entityAttributeLength !== 0) {
+                        queryBuilderRef = this.RQueryBuilderEntity.currentView.ui.builder;
+                        searchAttribute();
+                    }
                 }
+                filterPopupStatus();
 
                 function searchAttribute() {
                     if (queryBuilderRef.data("queryBuilder")) {
                         var rule = queryBuilderRef.queryBuilder("getRules");
                     }
-                    if (rule) {
-                        var ruleUrl = CommonViewFunction.attributeFilter.generateUrl({ value: rule, formatedDateToLong: true });
-                        that.options.searchTableFilters[filtertype][isTag ? that.options.value.tag : that.options.value.type] = ruleUrl;
-                        //this.makeFilterButtonActive(filtertype);
-                        if (!isTag && that.options.value && that.options.value.type && that.options.searchTableColumns) {
-                            if (!that.options.searchTableColumns[that.options.value.type]) {
-                                that.options.searchTableColumns[that.options.value.type] = ["selected", "name", "owner", "description", "tag", "typeName"];
-                            }
-                            that.options.searchTableColumns[that.options.value.type] = _.sortBy(_.union(that.options.searchTableColumns[that.options.value.type], getIdFromRuleObject(rule)));
-                        }
+                    rule ? that.updateFilterOptions(rule, filtertype, isTag) : isFilterValidate = false;
+                }
+
+                function filterPopupStatus() {
+                    if (isFilterValidate) {
                         if ($(e.currentTarget).hasClass("search")) {
-                            // this.$('.attribute-filter-container').hide();
-                            // that.$('.fa-chevron-right').toggleClass('fa-chevron-down');
                             that.$('.fa-angle-right').toggleClass('fa-angle-down');
                             that.$('.attribute-filter-container, .attr-filter-overlay').toggleClass('hide');
                             that.searchAttrFilter();
-
                             that.$('.attributeResultContainer').removeClass("overlay");
-                            //console.log('Done')
                         }
                     }
                 }
             },
+            getIdFromRuleObj: function(rule) {
+                var col = []
+                _.map(rule.rules, function(obj, key) {
+                    if (_.has(obj, "condition")) {
+                        return this.getIdFromRuleObj(obj);
+                    } else {
+                        return col.push(obj.id);
+                    }
+                });
+                return col;
+            },
+            updateFilterOptions: function(rule, filtertype, isTag) {
+                var ruleUrl = CommonViewFunction.attributeFilter.generateUrl({ value: rule, formatedDateToLong: true });
+                this.options.searchTableFilters[filtertype][isTag ? this.options.value.tag : this.options.value.type] = ruleUrl;
+                if (!isTag && this.options.value && this.options.value.type && this.options.searchTableColumns) {
+                    if (!this.options.searchTableColumns[this.options.value.type]) {
+                        this.options.searchTableColumns[this.options.value.type] = ["selected", "name", "owner", "description", "tag", "typeName"];
+                    }
+                    this.options.searchTableColumns[this.options.value.type] = _.sortBy(_.union(this.options.searchTableColumns[this.options.value.type], this.getIdFromRuleObj(rule)));
+                }
+            },
             renderQueryBuilder: function(obj, rQueryBuilder) {
                 var that = this;
                 require(['views/search/QueryBuilderView'], function(QueryBuilderView) {