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 2019/03/20 13:34:56 UTC

[atlas] branch master updated: ATLAS-2945 UI - If a Term is assigned to an Category then to user is able to assign the same term again

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

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


The following commit(s) were added to refs/heads/master by this push:
     new f92e06c  ATLAS-2945 UI - If a Term is assigned to an Category then to user is able to assign the same term again
f92e06c is described below

commit f92e06cda0833d5840015a18ec8f5c5f30b582a3
Author: gutkaBinit <bi...@gmail.com>
AuthorDate: Wed Mar 20 17:03:34 2019 +0530

    ATLAS-2945 UI - If a Term is assigned to an Category then to user is able to assign the same term again
    
    Signed-off-by: nixonrodrigues <ni...@apache.org>
---
 dashboardv2/public/js/utils/CommonViewFunction.js  | 14 +----
 .../js/views/detail_page/DetailPageLayoutView.js   | 23 +++-----
 .../js/views/glossary/AssignTermLayoutView.js      |  5 +-
 .../js/views/glossary/GlossaryDetailLayoutView.js  |  2 +
 .../public/js/views/glossary/GlossaryLayoutView.js | 63 +++++++++++-----------
 .../js/views/search/SearchResultLayoutView.js      |  4 +-
 6 files changed, 50 insertions(+), 61 deletions(-)

diff --git a/dashboardv2/public/js/utils/CommonViewFunction.js b/dashboardv2/public/js/utils/CommonViewFunction.js
index 4265a09..feb8dd3 100644
--- a/dashboardv2/public/js/utils/CommonViewFunction.js
+++ b/dashboardv2/public/js/utils/CommonViewFunction.js
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Globals', 'utils/Enums', 'moment'], function(require, Utils, Modal, Messages, Globals, Enums, moment) {
+define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enums', 'moment'], function(require, Utils, Modal, Messages, Enums, moment) {
     'use strict';
 
     var CommonViewFunction = {};
@@ -335,18 +335,6 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
         }
         if (!Enums.entityStateReadOnly[obj.status]) {
             if (obj.guid) {
-                var newD = { "guid": obj.guid, "termLinks": obj.meanings };
-                Globals.termMeanings = Globals.termMeanings ? Globals.termMeanings : [];
-                if (Globals.termMeanings.length > 0) {
-                    for (var x in Globals.termMeanings) {
-                        if (Globals.termMeanings[x]['guid'] == obj.guid) {
-                            Globals.termMeanings[x].termLinks = obj.meanings;
-                        }
-                    }
-                }
-                if (newD.termLinks.length > 0 && Globals.termMeanings == 0) {
-                    Globals.termMeanings.push(newD);
-                }
                 addTerm += '<a href="javascript:void(0)" data-id="addTerm" class="btn btn-action btn-sm assignTag" data-guid="' + obj.guid + '" ><i class="fa fa-plus"></i></a>';
             } else {
                 addTerm += '<a href="javascript:void(0)" data-id="addTerm" class="btn btn-action btn-sm assignTag"><i style="right:0" class="fa fa-plus"></i></a>';
diff --git a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
index 6727d6a..00dfe2b 100644
--- a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
@@ -198,7 +198,7 @@ define(['require',
                             this.generateTag([]);
                         }
                         if (collectionJSON.relationshipAttributes && collectionJSON.relationshipAttributes.meanings) {
-                            this.generateTerm(collectionJSON.relationshipAttributes.meanings, collectionJSON);
+                            this.generateTerm(collectionJSON.relationshipAttributes.meanings);
                         }
                         if (Globals.entityTypeConfList && _.isEmptyArray(Globals.entityTypeConfList)) {
                             this.ui.editButtonContainer.html(ButtonsTmpl({ btn_edit: true }));
@@ -403,21 +403,9 @@ define(['require',
                 this.ui.propagatedTagList.html(propagatedTagListData);
 
             },
-            generateTerm: function(data, obj) {
+            generateTerm: function(data) {
                 var that = this,
                     termData = "";
-                var newD = { "guid": obj.guid, "termLinks": obj.relationshipAttributes.meanings };
-                Globals.termMeanings = Globals.termMeanings ? Globals.termMeanings : [];
-                if (Globals.termMeanings.length > 0) {
-                    for (var x in Globals.termMeanings) {
-                        if (Globals.termMeanings[x]['guid'] == obj.guid) {
-                            Globals.termMeanings[x].termLinks = obj.relationshipAttributes.meanings;
-                        }
-                    }
-                }
-                if (newD.termLinks.length > 0 && Globals.termMeanings == 0) {
-                    Globals.termMeanings.push(newD);
-                }
                 _.each(data, function(val) {
                     if (val.relationshipStatus == "ACTIVE") {
                         termData += '<span class="btn btn-action btn-sm btn-icon btn-blue" title=' + val.displayText + ' data-id="termClick"><span>' + val.displayText + '</span><i class="fa fa-close" data-id="deleteTerm" data-guid="' + val.guid + '" data-type="term" title="Remove Term"></i></span>';
@@ -458,13 +446,18 @@ define(['require',
                 });
             },
             onClickAddTermBtn: function(e) {
-                var that = this;
+                var that = this,
+                    entityGuid = that.id,
+                    associatedTerms = this.collection.first().get('entity').relationshipAttributes.meanings;
+
+
                 require(['views/glossary/AssignTermLayoutView'], function(AssignTermLayoutView) {
                     var view = new AssignTermLayoutView({
                         guid: that.id,
                         callback: function() {
                             that.fetchCollection();
                         },
+                        associatedTerms: associatedTerms,
                         showLoader: that.showLoader.bind(that),
                         hideLoader: that.hideLoader.bind(that),
                         glossaryCollection: that.glossaryCollection
diff --git a/dashboardv2/public/js/views/glossary/AssignTermLayoutView.js b/dashboardv2/public/js/views/glossary/AssignTermLayoutView.js
index 76c9bde..9f9d8e5 100644
--- a/dashboardv2/public/js/views/glossary/AssignTermLayoutView.js
+++ b/dashboardv2/public/js/views/glossary/AssignTermLayoutView.js
@@ -59,7 +59,7 @@ define(['require',
              * @constructs
              */
             initialize: function(options) {
-                _.extend(this, _.pick(options, 'glossaryCollection', 'guid', 'callback', 'hideLoader', 'isCategoryView', 'categoryData', 'isTermView', 'termData', 'isAttributeRelationView', 'selectedTermAttribute'));
+                _.extend(this, _.pick(options, 'glossaryCollection', 'guid', 'callback', 'hideLoader', 'isCategoryView', 'categoryData', 'isTermView', 'termData', 'isAttributeRelationView', 'selectedTermAttribute', 'associatedTerms'));
                 var that = this;
                 this.options = options;
                 if (!this.isCategoryView && !this.isTermView && !this.isAttributeRelationView) {
@@ -207,7 +207,8 @@ define(['require',
                         "isAssignCategoryView": that.isTermView,
                         "isAssignEntityView": that.isEntityView,
                         "isAssignAttributeRelationView": that.isAttributeRelationView,
-                        "glossary": that.glossary
+                        "glossary": that.glossary,
+                        "associatedTerms": that.associatedTerms
                     }, that.options)));
                 });
             },
diff --git a/dashboardv2/public/js/views/glossary/GlossaryDetailLayoutView.js b/dashboardv2/public/js/views/glossary/GlossaryDetailLayoutView.js
index a6ea2b0..e7b5ca5 100644
--- a/dashboardv2/public/js/views/glossary/GlossaryDetailLayoutView.js
+++ b/dashboardv2/public/js/views/glossary/GlossaryDetailLayoutView.js
@@ -320,8 +320,10 @@ define(['require',
                             });
                         }
                     }
+
                     var view = new AssignTermLayoutView({
                         categoryData: that.data,
+                        associatedTerms: that.data && that.data.terms && that.data.terms.length > 0 ? that.data.terms : [],
                         isCategoryView: that.isCategoryView,
                         callback: function() {
                             that.getData();
diff --git a/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js b/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js
index 6da687c..c688bac 100644
--- a/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js
+++ b/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js
@@ -88,7 +88,7 @@ define(['require',
              * @constructs
              */
             initialize: function(options) {
-                _.extend(this, _.pick(options, 'guid', 'value', 'glossaryCollection', 'glossary', 'isAssignTermView', 'isAssignCategoryView', 'isAssignEntityView', 'isAssignAttributeRelationView'));
+                _.extend(this, _.pick(options, 'associatedTerms', 'guid', 'value', 'glossaryCollection', 'glossary', 'isAssignTermView', 'isAssignCategoryView', 'isAssignEntityView', 'isAssignAttributeRelationView'));
                 this.viewType = "term";
                 this.isAssignView = this.isAssignTermView || this.isAssignCategoryView || this.isAssignEntityView || this.isAssignAttributeRelationView;
                 this.bindEvents();
@@ -249,7 +249,9 @@ define(['require',
             generateData: function(opt) {
                 var that = this,
                     selectedGuid = that.guid,
+                    associatedTerms = that.associatedTerms,
                     type = opt.type;
+
                 if (opt.type == this.viewType) {
                     this.query[opt.type].isNodeNotFoundAtLoad = true;
                 }
@@ -339,38 +341,39 @@ define(['require',
                         });
                     }
                     if (type == "term" && obj.terms) {
-                        var theTerm = _.find(Globals.termMeanings, function(obj, index) {
-                            if (obj.guid == selectedGuid) {
-                                return obj;
-                            }
-                        });
                         _.each(obj.terms, function(term) {
-                            var includedTerms = _.map(theTerm && theTerm.termLinks, function(obj, index) {
-                                return obj.termGuid || obj.guid;
-                            });
-                            if ((!includedTerms.includes(term.termGuid))) {
-                                var typeName = term.typeName || "GlossaryTerm",
-                                    guid = term.termGuid,
-                                    termObj = {
-                                        "text": _.escape(term.displayText),
-                                        "type": typeName,
-                                        "gType": "term",
-                                        "guid": guid,
-                                        "id": guid,
-                                        "parent": obj,
-                                        "glossaryName": obj.name,
-                                        "glossaryId": obj.guid,
-                                        "model": term,
-                                        "icon": "fa fa-file-o"
+                            if (associatedTerms) {
+                                var associatedTermFound = _.find(associatedTerms, function(obj, index) {
+                                    if ((obj.termGuid ? obj.termGuid : obj.guid) == term.termGuid) {
+                                        return obj;
                                     }
-                                termObj.state = getSelectedState({
-                                    index: i,
-                                    node: termObj,
-                                    objGuid: guid
-                                })
-                                parent.children.push(termObj);
-
+                                });
+                                if (associatedTermFound) {
+                                    return;
+                                }
                             }
+
+                            var typeName = term.typeName || "GlossaryTerm",
+                                guid = term.termGuid,
+                                termObj = {
+                                    "text": _.escape(term.displayText),
+                                    "type": typeName,
+                                    "gType": "term",
+                                    "guid": guid,
+                                    "id": guid,
+                                    "parent": obj,
+                                    "glossaryName": obj.name,
+                                    "glossaryId": obj.guid,
+                                    "model": term,
+                                    "icon": "fa fa-file-o"
+                                }
+                            termObj.state = getSelectedState({
+                                index: i,
+                                node: termObj,
+                                objGuid: guid
+                            })
+                            parent.children.push(termObj);
+
                         });
                     }
                     return parent;
diff --git a/dashboardv2/public/js/views/search/SearchResultLayoutView.js b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
index 83e88f2..e38659f 100644
--- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
@@ -944,10 +944,12 @@ define(['require',
             },
             onClickAddTermBtn: function(e) {
                 var that = this,
-                    entityGuid = $(e.currentTarget).data("guid");
+                    entityGuid = $(e.currentTarget).data("guid"),
+                    associatedTerms = this.searchCollection.find({ guid: entityGuid }).get('meanings');
                 require(['views/glossary/AssignTermLayoutView'], function(AssignTermLayoutView) {
                     var view = new AssignTermLayoutView({
                         guid: entityGuid,
+                        associatedTerms: associatedTerms,
                         callback: function() {
                             that.fetchCollection();
                         },