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
commit c551f66556e01d69f2918831b8b93b0397b04d75 Author: prasad pawar <prasad.pa...@freestoneinfotech.com> AuthorDate: Tue Feb 23 13:56:13 2021 +0530 ATLAS-3376: UI V2 Fixed When no Catalogs are present, user should be presented with an appropriate message when trying to associate Category to Term. --- .../js/views/detail_page/DetailPageLayoutView.js | 57 +++++++++----- .../js/views/glossary/GlossaryDetailLayoutView.js | 89 +++++++++++----------- .../js/views/search/SearchResultLayoutView.js | 56 +++++++++----- .../js/views/detail_page/DetailPageLayoutView.js | 61 ++++++++++----- .../js/views/glossary/GlossaryDetailLayoutView.js | 89 +++++++++++----------- .../js/views/search/SearchResultLayoutView.js | 67 +++++++++++----- 6 files changed, 258 insertions(+), 161 deletions(-) diff --git a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js index b878f6d..e83212f 100644 --- a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js +++ b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js @@ -558,29 +558,46 @@ define(['require', }); }); }, - onClickAddTermBtn: function(e) { + assignTermModalView: function(glossaryCollection, obj) { var that = this, - entityGuid = that.id, - entityObj = this.collection.first().get('entity'), - associatedTerms = []; - if (entityObj && entityObj.relationshipAttributes && entityObj.relationshipAttributes.meanings) { - associatedTerms = entityObj.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 + terms = 0; + _.each(glossaryCollection.fullCollection.models, function(model) { + if (model.get('terms')) { + terms += model.get('terms').length; + }; + }); + if (terms) { + require(['views/glossary/AssignTermLayoutView'], function(AssignTermLayoutView) { + var view = new AssignTermLayoutView({ + guid: obj.guid, + callback: function() { + that.fetchCollection(); + }, + associatedTerms: obj.associatedTerms, + showLoader: that.showLoader.bind(that), + hideLoader: that.hideLoader.bind(that), + glossaryCollection: glossaryCollection + }); + view.modal.on('ok', function() { + Utils.showTitleLoader(that.$('.page-title .fontLoader'), that.$('.entityDetail')); + }); }); - view.modal.on('ok', function() { - Utils.showTitleLoader(that.$('.page-title .fontLoader'), that.$('.entityDetail')); + } else { + Utils.notifyInfo({ + content: "There are no available terms that can be associated with this entity" }); - }); + } + }, + onClickAddTermBtn: function(e) { + var entityObj = this.collection.first().get('entity'), + obj = { + guid: this.id, + associatedTerms: [], + }; + this.assignTermModalView(this.glossaryCollection, obj); + if (entityObj && entityObj.relationshipAttributes && entityObj.relationshipAttributes.meanings) { + obj.associatedTerms = entityObj.relationshipAttributes.meanings; + } }, renderEntityDetailTableLayoutView: function(obj) { var that = this; diff --git a/dashboardv2/public/js/views/glossary/GlossaryDetailLayoutView.js b/dashboardv2/public/js/views/glossary/GlossaryDetailLayoutView.js index d9f1fb9..bb8fe8f 100644 --- a/dashboardv2/public/js/views/glossary/GlossaryDetailLayoutView.js +++ b/dashboardv2/public/js/views/glossary/GlossaryDetailLayoutView.js @@ -165,7 +165,7 @@ define(['require', } }; events["click " + this.ui.addTerm] = 'onClickAddTermBtn'; - events["click " + this.ui.addCategory] = 'onClickAddCategoryBtn'; + events["click " + this.ui.addCategory] = 'onClickAddTermBtn'; events["click " + this.ui.addTag] = 'onClickAddTagBtn'; return events; }, @@ -336,60 +336,63 @@ define(['require', this.ui.tagList.find("span.btn").remove(); this.ui.tagList.prepend(tagData); }, + getCategoryTermCount: function(collection, matchString) { + var terms = 0; + _.each(collection, function(model) { + if (model.get(matchString)) { + terms += model.get(matchString).length; + } + }); + return terms; + }, onClickAddTermBtn: function(e) { - var that = this; - require(['views/glossary/AssignTermLayoutView'], function(AssignTermLayoutView) { - var glossary = that.glossaryCollection; - if (that.value && that.value.gId) { - var foundModel = that.glossaryCollection.find({ guid: that.value.gId }); - if (foundModel) { - glossary = new VGlossaryList([foundModel.toJSON()], { - comparator: function(item) { - return item.get("name"); - } - }); - } + var glossary = this.glossaryCollection; + if (this.value && this.value.gId) { + var foundModel = this.glossaryCollection.find({ guid: this.value.gId }); + if (foundModel) { + glossary = new VGlossaryList([foundModel.toJSON()], { + comparator: function(item) { + return item.get("name"); + } + }); } - - var view = new AssignTermLayoutView({ - categoryData: that.data, - associatedTerms: that.data && that.data.terms && that.data.terms.length > 0 ? that.data.terms : [], - isCategoryView: that.isCategoryView, + } + var obj = { callback: function() { - that.getData(); + this.getData(); }, - glossaryCollection: glossary + glossaryCollection: glossary, + }, + emptyListMessage = this.isCategoryView ? "There are no available terms that can be associated with this category" : "There are no available categories that can be associated with this term"; + + if (this.isCategoryView) { + obj = _.extend(obj, { + categoryData: this.data, + associatedTerms: (this.data && this.data.terms && this.data.terms.length > 0) ? this.data.terms : [], + isCategoryView: this.isCategoryView, }); - view.modal.on('ok', function() { - that.hideLoader(); + } else { + obj = _.extend(obj, { + termData: this.data, + isTermView: this.isTermView, }); - }); + } + if (this.getCategoryTermCount(glossary.fullCollection.models, this.isCategoryView ? "terms" : "categories")) { + this.AssignTermLayoutViewModal(obj); + } else { + Utils.notifyInfo({ + content: emptyListMessage + }); + } }, - onClickAddCategoryBtn: function(e) { + AssignTermLayoutViewModal: function(termCategoryObj) { var that = this; require(['views/glossary/AssignTermLayoutView'], function(AssignTermLayoutView) { - var glossary = that.glossaryCollection; - if (that.value && that.value.gId) { - var foundModel = that.glossaryCollection.find({ guid: that.value.gId }); - if (foundModel) { - glossary = new VGlossaryList([foundModel.toJSON()], { - comparator: function(item) { - return item.get("name"); - } - }); - } - } - var view = new AssignTermLayoutView({ - termData: that.data, - isTermView: that.isTermView, - callback: function() { - that.getData(); - }, - glossaryCollection: glossary - }); + var view = new AssignTermLayoutView(termCategoryObj); view.modal.on('ok', function() { that.hideLoader(); }); + }); }, onClickAddTagBtn: function(e) { diff --git a/dashboardv2/public/js/views/search/SearchResultLayoutView.js b/dashboardv2/public/js/views/search/SearchResultLayoutView.js index 9db1b54..98c9ec0 100644 --- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js +++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - define(['require', 'backbone', 'table-dragger', @@ -1123,31 +1122,52 @@ define(['require', that.addTagModalView(guid); } }, + //This function checks for the lenght of Available terms and modal for adding terms is displayed accordingly. + assignTermModalView: function(glossaryCollection, obj) { + var that = this, + terms = 0; + _.each(glossaryCollection.fullCollection.models, function(model) { + if (model.get('terms')) { + terms += model.get('terms').length; + }; + }); + if (terms) { + require(['views/glossary/AssignTermLayoutView'], function(AssignTermLayoutView) { + var view = new AssignTermLayoutView({ + guid: obj.guid, + multiple: obj.multiple, + associatedTerms: obj.associatedTerms, + callback: function() { + that.multiSelectEntity = []; + that.$('.multiSelectTag,.multiSelectTerm').hide(); + that.fetchCollection(); + }, + glossaryCollection: glossaryCollection, + }); + }); + } else { + Utils.notifyInfo({ + content: "There are no available terms" + }); + } + }, onClickAddTermBtn: function(e) { var that = this, guid = "", entityGuid = $(e.currentTarget).data("guid"), - associatedTerms = undefined, - multiple = undefined, + obj = { + guid: entityGuid, + multiple: undefined, + associatedTerms: undefined, + }, isTermMultiSelect = $(e.currentTarget).hasClass('multiSelectTerm'); + + that.assignTermModalView(this.glossaryCollection, obj); if (isTermMultiSelect && this.multiSelectEntity && this.multiSelectEntity.length) { - multiple = this.multiSelectEntity; + obj.multiple = this.multiSelectEntity; } else if (entityGuid) { - associatedTerms = this.searchCollection.find({ guid: entityGuid }).get('meanings'); + obj.associatedTerms = this.searchCollection.find({ guid: entityGuid }).get('meanings'); } - require(['views/glossary/AssignTermLayoutView'], function(AssignTermLayoutView) { - var view = new AssignTermLayoutView({ - guid: entityGuid, - multiple: multiple, - associatedTerms: associatedTerms, - callback: function() { - that.multiSelectEntity = []; - that.$('.multiSelectTag,.multiSelectTerm').hide(); - that.fetchCollection(); - }, - glossaryCollection: that.glossaryCollection, - }); - }); }, onClickTagCross: function(e) { var that = this, diff --git a/dashboardv3/public/js/views/detail_page/DetailPageLayoutView.js b/dashboardv3/public/js/views/detail_page/DetailPageLayoutView.js index dbbbcde..a18984e 100644 --- a/dashboardv3/public/js/views/detail_page/DetailPageLayoutView.js +++ b/dashboardv3/public/js/views/detail_page/DetailPageLayoutView.js @@ -565,29 +565,54 @@ define(['require', }); }); }, + //This function checks for the lenght of Available terms and modal for adding terms is displayed accordingly. + assignTermModalView: function(glossaryCollection, obj) { + var that = this, + terms = 0; + _.each(glossaryCollection.fullCollection.models, function(model) { + if (model.get('terms')) { + terms += model.get('terms').length; + }; + }); + if (terms) { + require(['views/glossary/AssignTermLayoutView'], function(AssignTermLayoutView) { + var view = new AssignTermLayoutView({ + guid: obj.guid, + callback: function() { + that.fetchCollection(); + }, + associatedTerms: obj.associatedTerms, + showLoader: that.showLoader.bind(that), + hideLoader: that.hideLoader.bind(that), + glossaryCollection: glossaryCollection + }); + view.modal.on('ok', function() { + Utils.showTitleLoader(that.$('.page-title .fontLoader'), that.$('.entityDetail')); + }); + }); + } else { + Utils.notifyInfo({ + content: "There are no available terms that can be associated with this entity" + }); + } + }, onClickAddTermBtn: function(e) { var that = this, - entityGuid = that.id, entityObj = this.collection.first().get('entity'), - associatedTerms = []; + glossaryData = null, + obj = { + guid: this.id, + associatedTerms: [], + }; + this.glossaryCollection.fetch({ + success: function(glossaryCollection) { + that.assignTermModalView(glossaryCollection, obj); + }, + reset: true, + }); if (entityObj && entityObj.relationshipAttributes && entityObj.relationshipAttributes.meanings) { - associatedTerms = entityObj.relationshipAttributes.meanings; + obj.associatedTerms = entityObj.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 - }); - view.modal.on('ok', function() { - Utils.showTitleLoader(that.$('.page-title .fontLoader'), that.$('.entityDetail')); - }); - }); }, renderEntityDetailTableLayoutView: function(obj) { var that = this; diff --git a/dashboardv3/public/js/views/glossary/GlossaryDetailLayoutView.js b/dashboardv3/public/js/views/glossary/GlossaryDetailLayoutView.js index 951281c..551e229 100644 --- a/dashboardv3/public/js/views/glossary/GlossaryDetailLayoutView.js +++ b/dashboardv3/public/js/views/glossary/GlossaryDetailLayoutView.js @@ -171,7 +171,7 @@ define(['require', Utils.backButtonClick(); } events["click " + this.ui.addTerm] = 'onClickAddTermBtn'; - events["click " + this.ui.addCategory] = 'onClickAddCategoryBtn'; + events["click " + this.ui.addCategory] = 'onClickAddTermBtn'; events["click " + this.ui.addTag] = 'onClickAddTagBtn'; return events; }, @@ -351,60 +351,63 @@ define(['require', this.ui.tagList.find("span.btn").remove(); this.ui.tagList.prepend(tagData); }, + getCategoryTermCount: function(collection, matchString) { + var terms = 0; + _.each(collection, function(model) { + if (model.get(matchString)) { + terms += model.get(matchString).length; + } + }); + return terms; + }, onClickAddTermBtn: function(e) { - var that = this; - require(['views/glossary/AssignTermLayoutView'], function(AssignTermLayoutView) { - var glossary = that.glossaryCollection; - if (that.value && that.value.gId) { - var foundModel = that.glossaryCollection.find({ guid: that.value.gId }); - if (foundModel) { - glossary = new VGlossaryList([foundModel.toJSON()], { - comparator: function(item) { - return item.get("name"); - } - }); - } + var glossary = this.glossaryCollection; + if (this.value && this.value.gId) { + var foundModel = this.glossaryCollection.find({ guid: this.value.gId }); + if (foundModel) { + glossary = new VGlossaryList([foundModel.toJSON()], { + comparator: function(item) { + return item.get("name"); + } + }); } - - var view = new AssignTermLayoutView({ - categoryData: that.data, - associatedTerms: that.data && that.data.terms && that.data.terms.length > 0 ? that.data.terms : [], - isCategoryView: that.isCategoryView, + } + var obj = { callback: function() { - that.getData(); + this.getData(); }, - glossaryCollection: glossary + glossaryCollection: glossary, + }, + emptyListMessage = this.isCategoryView ? "There are no available terms that can be associated with this category" : "There are no available categories that can be associated with this term"; + + if (this.isCategoryView) { + obj = _.extend(obj, { + categoryData: this.data, + associatedTerms: (this.data && this.data.terms && this.data.terms.length > 0) ? this.data.terms : [], + isCategoryView: this.isCategoryView, }); - view.modal.on('ok', function() { - that.hideLoader(); + } else { + obj = _.extend(obj, { + termData: this.data, + isTermView: this.isTermView, }); - }); + } + if (this.getCategoryTermCount(glossary.fullCollection.models, this.isCategoryView ? "terms" : "categories")) { + this.AssignTermLayoutViewModal(obj); + } else { + Utils.notifyInfo({ + content: emptyListMessage + }); + } }, - onClickAddCategoryBtn: function(e) { + AssignTermLayoutViewModal: function(termCategoryObj) { var that = this; require(['views/glossary/AssignTermLayoutView'], function(AssignTermLayoutView) { - var glossary = that.glossaryCollection; - if (that.value && that.value.gId) { - var foundModel = that.glossaryCollection.find({ guid: that.value.gId }); - if (foundModel) { - glossary = new VGlossaryList([foundModel.toJSON()], { - comparator: function(item) { - return item.get("name"); - } - }); - } - } - var view = new AssignTermLayoutView({ - termData: that.data, - isTermView: that.isTermView, - callback: function() { - that.getData(); - }, - glossaryCollection: glossary - }); + var view = new AssignTermLayoutView(termCategoryObj); view.modal.on('ok', function() { that.hideLoader(); }); + }); }, onClickAddTagBtn: function(e) { diff --git a/dashboardv3/public/js/views/search/SearchResultLayoutView.js b/dashboardv3/public/js/views/search/SearchResultLayoutView.js index d98d6e2..d5883ca 100644 --- a/dashboardv3/public/js/views/search/SearchResultLayoutView.js +++ b/dashboardv3/public/js/views/search/SearchResultLayoutView.js @@ -153,7 +153,7 @@ define(['require', * @constructs */ initialize: function(options) { - _.extend(this, _.pick(options, 'value', 'guid', 'initialView', 'isTypeTagNotExists', 'classificationDefCollection', 'entityDefCollection', 'typeHeaders', 'searchVent', 'enumDefCollection', 'tagCollection', 'searchTableColumns', 'isTableDropDisable', 'fromView', 'glossaryCollection', 'termName', 'businessMetadataDefCollection', 'profileDBView')); + _.extend(this, _.pick(options, 'value', 'guid', 'initialView', 'isTypeTagNotExists', 'classificationDefCollection', 'entityDefCollection', 'typeHeaders', 'searchVent', 'categoryEvent', 'enumDefCollection', 'tagCollection', 'searchTableColumns', 'isTableDropDisable', 'fromView', 'glossaryCollection', 'termName', 'businessMetadataDefCollection', 'profileDBView')); this.entityModel = new VEntity(); this.searchCollection = new VSearchList(); this.limit = 25; @@ -248,13 +248,17 @@ define(['require', }, this); this.listenTo(this.searchCollection, "backgrid:sorted", function(model, response) { this.checkTableFetch(); - }, this) + }, this); + this.listenTo(this.categoryEvent, "Sucess:TermSearchResultPage", function() { + this.glossaryCollection.fetch({ reset: true }); + }); }, onRender: function() { var that = this; if (Utils.getUrlState.isSearchTab()) { this.$(".action-box").hide(); } + this.checkEntityImage = {}; this.commonTableOptions = { collection: this.searchCollection, @@ -1134,32 +1138,57 @@ define(['require', that.addTagModalView(guid); } }, + //This function checks for the lenght of Available terms and modal for adding terms is displayed accordingly. + assignTermModalView: function(glossaryCollection, obj) { + var that = this, + terms = 0; + _.each(glossaryCollection.fullCollection.models, function(model) { + if (model.get('terms')) { + terms += model.get('terms').length; + }; + }); + if (terms) { + require(['views/glossary/AssignTermLayoutView'], function(AssignTermLayoutView) { + var view = new AssignTermLayoutView({ + guid: obj.guid, + multiple: obj.multiple, + associatedTerms: obj.associatedTerms, + callback: function() { + that.multiSelectEntity = []; + that.$('.multiSelectTag,.multiSelectTerm').hide(); + that.fetchCollection(); + }, + glossaryCollection: glossaryCollection, + }); + }); + } else { + Utils.notifyInfo({ + content: "There are no available terms" + }); + } + }, onClickAddTermBtn: function(e) { var that = this, guid = "", entityGuid = $(e.currentTarget).data("guid"), - associatedTerms = undefined, - multiple = undefined, + obj = { + guid: entityGuid, + multiple: undefined, + associatedTerms: undefined, + }, isTermMultiSelect = $(e.currentTarget).hasClass('multiSelectTerm'); + this.glossaryCollection.fetch({ + success: function(glossaryCollection) { + that.assignTermModalView(glossaryCollection, obj); + }, + reset: true, + }); if (isTermMultiSelect && this.multiSelectEntity && this.multiSelectEntity.length) { - multiple = this.multiSelectEntity; + obj.multiple = this.multiSelectEntity; } else if (entityGuid) { - associatedTerms = this.searchCollection.find({ guid: entityGuid }).get('meanings'); + obj.associatedTerms = this.searchCollection.find({ guid: entityGuid }).get('meanings'); } - require(['views/glossary/AssignTermLayoutView'], function(AssignTermLayoutView) { - var view = new AssignTermLayoutView({ - guid: entityGuid, - multiple: multiple, - associatedTerms: associatedTerms, - callback: function() { - that.multiSelectEntity = []; - that.$('.multiSelectTag,.multiSelectTerm').hide(); - that.fetchCollection(); - }, - glossaryCollection: that.glossaryCollection, - }); - }); }, onClickTagCross: function(e) { var that = this,