You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ni...@apache.org on 2021/04/21 07:29:11 UTC

[atlas] branch branch-2.0 updated: ATLAS-3887 ATLAS-4242: UI : Fixed Consistency and highlighting issues while switching between old and new UI.

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

nixon pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new 9f9864d  ATLAS-3887 ATLAS-4242: UI : Fixed Consistency and highlighting issues while switching between old and new UI.
9f9864d is described below

commit 9f9864d3b84ca6b31dc45117a2830b2114f195e0
Author: prasad pawar <pr...@freestoneinfotech.com>
AuthorDate: Wed Apr 14 14:43:12 2021 +0530

    ATLAS-3887 ATLAS-4242: UI : Fixed Consistency and highlighting issues while switching between old and new UI.
    
    Signed-off-by: nixonrodrigues <ni...@apache.org>
    (cherry picked from commit 4d027b4bf1a0c6b4329422a75518f010c579133a)
---
 .../public/js/views/glossary/GlossaryLayoutView.js | 11 +++-
 .../public/js/views/search/SearchLayoutView.js     | 20 ++++++-
 dashboardv2/public/js/views/tag/TagLayoutView.js   |  5 +-
 dashboardv3/public/js/router/Router.js             | 35 ++++++++----
 .../js/views/search/tree/GlossaryTreeLayoutView.js | 62 ++++++++++++++++++++--
 5 files changed, 110 insertions(+), 23 deletions(-)

diff --git a/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js b/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js
index 0de5c35..a13ad4a 100644
--- a/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js
+++ b/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js
@@ -216,7 +216,8 @@ define(['require',
                 }
                 if (Utils.getUrlState.isGlossaryTab()) {
                     var obj = this.query[this.viewType],
-                        $tree = this.ui[(this.viewType == "term" ? "termTree" : "categoryTree")]
+                        $tree = this.ui[(this.viewType == "term" ? "termTree" : "categoryTree")];
+                    obj["gId"] = that.value.gId; //this Property added, Because when we toggle the GlossaryViewButton it does not adds the gId which is required for selection.  
                     if (obj.guid) {
                         var node = $tree.jstree(true).get_node(obj.guid);
                         if (node) {
@@ -826,11 +827,17 @@ define(['require',
                         obj["gId"] = selectedItem.guid;
                     }
                     this.query[this.viewType] = _.extend(obj, _.omit(this.value, 'gId'), _.pick(this.glossary.selectedItem, 'model', 'type', 'gType', 'guid'), { "viewType": this.viewType, "isNodeNotFoundAtLoad": this.query[this.viewType].isNodeNotFoundAtLoad });
+                    //Below condition if for adding term Param to the URL for selection Purpose while switching from Old UI to New UI on term selection.
+                    if (selectedItem.type === "GlossaryTerm") {
+                        obj['term'] = selectedItem.text + '@' + selectedItem.glossaryName;
+                    } else {
+                        delete obj.term;
+                    }
                     Utils.setUrl({
                         url: '#!/glossary/' + obj.guid,
                         mergeBrowserUrl: false,
                         trigger: true,
-                        urlParams: _.omit(obj, 'model', 'guid', 'type', 'isNodeNotFoundAtLoad'),
+                        urlParams: _.omit(obj, 'model', 'type', 'isNodeNotFoundAtLoad'), //Guid has been removed from here because we need in the URL for Highlighting issue.
                         updateTabState: true
                     });
                 }
diff --git a/dashboardv2/public/js/views/search/SearchLayoutView.js b/dashboardv2/public/js/views/search/SearchLayoutView.js
index 1dbda7f..be46d7e 100644
--- a/dashboardv2/public/js/views/search/SearchLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchLayoutView.js
@@ -625,6 +625,8 @@ define(['require',
                 }
             },
             renderTermList: function() {
+                this.glossaryTermArray = null; //This Value is created to store the result of search Term while basic search through term.
+                var that = this;
                 var getTypeAheadData = function(data, params) {
                     var dataList = data.entities,
                         foundOptions = [];
@@ -637,7 +639,7 @@ define(['require',
                         }
                     });
                     return foundOptions;
-                }
+                };
                 this.ui.termLov.select2({
                     placeholder: "Search Term",
                     allowClear: true,
@@ -654,6 +656,7 @@ define(['require',
                             };
                         },
                         processResults: function(data, params) {
+                            that.glossaryTermArray = getTypeAheadData(data, params); //storing the search Results obj
                             return {
                                 results: getTypeAheadData(data, params)
                             };
@@ -734,6 +737,18 @@ define(['require',
             findSearchResult: function() {
                 this.triggerSearch(this.ui.searchInput.val());
             },
+            //This below function returns the searched Term Guid.
+            getSearchedTermGuid: function() {
+                var searchedTerm = this.ui.termLov.select2('val'),
+                    searchedTermGuid = null;
+                if (searchedTerm) {
+                    this.glossaryTermArray.find(function(obj) {
+                        if (searchedTerm === obj.id)
+                            searchedTermGuid = obj.guid;
+                    });
+                }
+                return searchedTermGuid;
+            },
             triggerSearch: function(value) {
                 var params = {
                         searchType: this.type,
@@ -743,11 +758,12 @@ define(['require',
                     },
                     typeLovValue = this.ui.typeLov.find(':selected').data('name'), // to get count of selected element used data
                     tagLovValue = this.ui.tagLov.find(':selected').data('name') || this.ui.tagLov.val(),
-                    termLovValue = this.ui.termLov.select2('val')
+                    termLovValue = this.ui.termLov.select2('val');
                 params['type'] = typeLovValue || null;
                 if (!this.dsl) {
                     params['tag'] = tagLovValue || null;
                     params['term'] = termLovValue || null;
+                    params['guid'] = this.getSearchedTermGuid(); //Adding Guid in the URL for selection while switching. 
                     var entityFilterObj = this.searchTableFilters['entityFilters'],
                         tagFilterObj = this.searchTableFilters['tagFilters'];
                     params['includeDE'] = false;
diff --git a/dashboardv2/public/js/views/tag/TagLayoutView.js b/dashboardv2/public/js/views/tag/TagLayoutView.js
index e2155f1..bde61b8 100644
--- a/dashboardv2/public/js/views/tag/TagLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagLayoutView.js
@@ -321,7 +321,7 @@ define(['require',
                         return '<li class="parent-node" data-id="tags">' +
                             '<div><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div>' +
                             (hasChild ? '<i class="fa toggleArrow fa-angle-right" data-id="expandArrow" data-name="' + name + '"></i>' : '') +
-                            '<a href="#!/tag/tagAttribute/' + name + '?viewType=' + (isTree ? 'tree' : 'flat') + '&searchType=basic"  data-name="' + name + '">' + name + '</a></div>' +
+                            '<a href="#!/tag/tagAttribute/' + name + '?viewType=' + (isTree ? 'tree' : 'flat') + '&searchType=basic&tag=' + name + '" data-name="' + name + '">' + name + '</a></div>' +
                             (isTree && hasChild ? '<ul class="child hide">' + that.generateTree({ 'data': options.children, 'isTree': isTree }) + '</ul>' : '') + '</li>';
                     };
                 if (isTree) {
@@ -410,7 +410,6 @@ define(['require',
                         });
                     });
                     modal.on('ok', function() {
-                        // modal.$el.find('button.ok').attr("disabled", "true");
                         modal.$el.find('button.ok').showButtonLoader();
                         that.onCreateButton(view, modal);
                     });
@@ -531,7 +530,7 @@ define(['require',
                             });
                         }
                         that.collection.fullCollection.add(classificationDefs);
-                        that.setUrl('#!/tag/tagAttribute/' + ref.ui.tagName.val(), true);
+                        that.setUrl('#!/tag/tagAttribute/' + ref.ui.tagName.val() + '?tag=' + ref.ui.tagName.val(), true);
                         Utils.notifySuccess({
                             content: "Classification " + that.name + Messages.getAbbreviationMsg(false, 'addSuccessMessage')
                         });
diff --git a/dashboardv3/public/js/router/Router.js b/dashboardv3/public/js/router/Router.js
index 3cacd78..1a19523 100644
--- a/dashboardv3/public/js/router/Router.js
+++ b/dashboardv3/public/js/router/Router.js
@@ -233,7 +233,7 @@ define([
         },
         renderGlossaryLayoutView: function(id) {
             var that = this;
-            require(["views/site/Header", "views/glossary/GlossaryContainerLayoutView", "views/site/SideNavLayoutView"], function(Header, GlossaryContainerLayoutView, SideNavLayoutView) {
+            require(["views/site/Header", "views/glossary/GlossaryContainerLayoutView", "views/search/SearchDefaultLayoutView", "views/site/SideNavLayoutView"], function(Header, GlossaryContainerLayoutView, SearchDefaultLayoutView, SideNavLayoutView) {
                 var paramObj = Utils.getUrlState.getQueryParams();
                 that.renderViewIfNotExists(that.getHeaderOptions(Header));
                 var options = _.extend({
@@ -254,16 +254,29 @@ define([
                         return new SideNavLayoutView(options);
                     }
                 });
-                that.renderViewIfNotExists({
-                    view: App.rContent,
-                    viewName: "GlossaryContainerLayoutView",
-                    manualRender: function() {
-                        this.view.currentView.manualRender(options);
-                    },
-                    render: function() {
-                        return new GlossaryContainerLayoutView(options)
-                    }
-                });
+                //Below condition is added for showing Detail Page for only Term and Category,
+                //because we are showing default search Page on Glossary Selection.
+                if (paramObj.gType !== "glossary") {
+                    that.renderViewIfNotExists({
+                        view: App.rContent,
+                        viewName: "GlossaryContainerLayoutView",
+                        manualRender: function() {
+                            this.view.currentView.manualRender(options);
+                        },
+                        render: function() {
+                            return new GlossaryContainerLayoutView(options)
+                        }
+                    });
+                } else {
+                    options["value"] = "";
+                    options["initialView"] = true;
+                    that.renderViewIfNotExists(
+                        that.getHeaderOptions(Header, {
+                            fromDefaultSearch: true
+                        })
+                    );
+                    App.rContent.show(new SearchDefaultLayoutView(options));
+                }
             });
         },
         renderDefaultSearchLayoutView: function(opt) {
diff --git a/dashboardv3/public/js/views/search/tree/GlossaryTreeLayoutView.js b/dashboardv3/public/js/views/search/tree/GlossaryTreeLayoutView.js
index 421855d..f61b1b1 100644
--- a/dashboardv3/public/js/views/search/tree/GlossaryTreeLayoutView.js
+++ b/dashboardv3/public/js/views/search/tree/GlossaryTreeLayoutView.js
@@ -96,6 +96,7 @@ define([
                 this.glossaryCollection.fullCollection, "reset add change",
                 function(skip) {
                     if (this.ui.termSearchTree.jstree(true)) {
+                        that.glossaryTreeUpdate = true; //To Keep the selection of Term after any new Glossary is Created.
                         this.ui.termSearchTree.jstree(true).refresh();
                     } else {
                         this.renderGlossaryTree();
@@ -117,7 +118,8 @@ define([
             });
         },
         glossarySwitchBtnUpdate: function() {
-            this.ui.showGlossaryType.attr("data-original-title", (this.isTermView ? "Show Category" : "Show Term"));
+            var tooltipTitle = (this.isTermView ? "Show Category" : "Show Term");
+            this.ui.showGlossaryType.attr({ "data-original-title": tooltipTitle, "title": tooltipTitle });
             this.ui.showGlossaryType.tooltip('hide');
             this.ui.showGlossaryType.find("i").toggleClass("switch-button");
             if (this.isTermView) {
@@ -155,6 +157,12 @@ define([
             });
             this.getViewType();
             this.bindEvents();
+            //To stop the trigger Search event, if the node is selected in Old UI and swicthed to New UI.
+            if (Utils.getUrlState.getQueryParams()) {
+                if(Utils.getUrlState.getQueryParams().gType === "term"){
+                    this.glossaryTreeUpdate = true;
+                }
+            }
         },
         onRender: function() {
             this.changeLoaderState(true);
@@ -226,6 +234,11 @@ define([
             this.createTermAction();
         },
         onNodeSelect: function(options, showCategory) {
+            if (this.glossaryTreeUpdate && options.node.original.type === "GlossaryTerm") {
+                //To stop the trigger Search event,if the node is selected in Old UI and swicthed to New UI.
+                this.glossaryTreeUpdate = false;
+                return;
+            }
             var name, type, selectedNodeId, that = this,
                 glossaryType = options.node.original.gType;
             if (glossaryType == "category") {
@@ -275,6 +288,27 @@ define([
                 if (that.searchVent) {
                     that.searchVent.trigger("Success:Category");
                 }
+            } else if (glossaryType = "glossary") { //This condition is added to setUrl after click on Glossary for highlighting issue from New UI to Old UI.                
+                that.glossaryTermId = null;
+                if (that.glossaryId != options.node.id) {
+                    that.glossaryId = options.node.id;
+                    var params = {
+                        "gId": that.glossaryId,
+                        "gType": options.node.original.gType,
+                        "viewType": (this.isTermView) ? "term" : "category"
+                    };
+                    Utils.setUrl({
+                        url: '#!/glossary/' + that.glossaryId,
+                        urlParams: params,
+                        mergeBrowserUrl: false,
+                        trigger: false,
+                        updateTabState: true
+                    });
+                } else {
+                    that.glossaryId = null;
+                    that.ui.termSearchTree.jstree(true).deselect_all(true);
+                    this.showDefaultPage();
+                }
             } else {
                 that.glossaryTermId = null;
                 if (that.glossaryId != options.node.id) {
@@ -344,8 +378,10 @@ define([
             var that = this,
                 collection = (options && options.collection) || this.glossaryCollection.fullCollection,
                 listOfParents = [],
-                type = "term";
-
+                type = "term",
+                queryParams = Utils.getUrlState.getQueryParams(),
+                glossaryGuid = queryParams ? queryParams.gId : null,
+                gType = queryParams ? queryParams.gType : "term";
             return this.glossaryCollection.fullCollection.map(function(model, i) {
                 var obj = model.toJSON(),
                     parent = {
@@ -358,7 +394,10 @@ define([
                         type: obj.typeName ? obj.typeName : "GLOSSARY",
                         gType: "glossary",
                         children: [],
-                        state: { opened: true }
+                        state: {
+                            opened: true,
+                            selected: (model.id === glossaryGuid && gType === "glossary") ? true : false
+                        }
                     },
                     openGlossaryNodesState = function(treeDate) {
                         if (treeDate.length == 1) {
@@ -620,7 +659,7 @@ define([
                 gId = selectednode[0].original.parent && selectednode[0].original.parent.guid,
                 isGlossaryView = (type == 'GlossaryTerm' || type == 'GlossaryCategory') ? false : true,
                 model = this.glossaryCollection.fullCollection.get(guid),
-                termModel = this.glossaryCollection.fullCollection.get(gId);;
+                termModel = this.glossaryCollection.fullCollection.get(gId);
             if (isGlossaryView) {
                 CommonViewFunction.createEditGlossaryCategoryTerm({
                     "model": model,
@@ -649,6 +688,10 @@ define([
                     viewType: that.isTermView ? 'term' : 'category',
                     searchType: "basic"
                 }
+                if (type === "GlossaryTerm") {
+                    //Below condition is used to keep the selection or Highlight after clicking on the viewEdit option on term.
+                    params['term'] = selectednode[0].original.name + '@' + selectednode[0].original.parent.name;
+                }
                 var serachUrl = '#!/glossary/' + guid;
                 this.triggerSearch(params, serachUrl);
                 if (!this.isTermView && this.options.categoryEvent) {
@@ -701,6 +744,10 @@ define([
                 ).on("load_node.jstree", function(e, data) {}).on("open_node.jstree", function(e, data) {}).on("select_node.jstree", function(e, data) {
                     if (that.fromManualRender !== true) {
                         that.onNodeSelect(data);
+                        if (that.glossaryId === data.node.original.id) {
+                            //This condition is to reset the Glossary ID to null after clicking on the Logo.
+                            that.glossaryId = null;
+                        }
                     } else {
                         that.fromManualRender = false;
                     }
@@ -726,6 +773,10 @@ define([
                             that.options.categoryEvent.trigger("Success:Category", true);
                         }
                     }
+                    //Below condition is for switching the the Show Term/Show Category toggle button on swicthing from Old to New UI.
+                    if (that.isTermView === false) {
+                        that.glossarySwitchBtnUpdate();
+                    }
 
                 }).on("hover_node.jstree", function(nodes, str, res) {
                     var aTerm = that.$("#" + str.node.a_attr.id),
@@ -749,6 +800,7 @@ define([
         refresh: function(options) {
             this.glossaryTermId = null;
             this.fetchGlossary();
+            this.glossaryTreeUpdate = true;
         },
         onClickImportGlossary: function() {
             var that = this;