This is an automated email from the ASF dual-hosted git repository. nbonte pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/atlas.git
commit 2c4587800a057562454eaad85583c246f3015766 Author: prasad pawar <[email protected]> AuthorDate: Mon Feb 15 17:56:32 2021 +0530 ATLAS-4154:UI Glossary changes & improvements fixed V1 Signed-off-by: Nikhil Bonte <[email protected]> (cherry picked from commit 4880939d4fd1f48508b981de46d55db8e5bc02be) --- dashboardv2/public/css/scss/override.scss | 3 +++ .../templates/glossary/GlossaryLayoutView_tmpl.html | 2 +- dashboardv2/public/js/templates/site/Header.html | 2 +- .../js/views/glossary/AssignTermLayoutView.js | 12 +++++++++--- .../public/js/views/glossary/GlossaryLayoutView.js | 21 ++++++++++++++++++++- .../public/js/views/import/ImportLayoutView.js | 8 ++++---- dashboardv3/public/css/scss/leftsidebar.scss | 11 +++++++++++ dashboardv3/public/css/scss/override.scss | 4 ++++ .../search/tree/GlossaryTreeLayoutView_tmpl.html | 2 +- .../js/views/glossary/AssignTermLayoutView.js | 12 +++++++++--- .../public/js/views/glossary/GlossaryLayoutView.js | 18 +++++++++++++++++- .../public/js/views/import/ImportLayoutView.js | 8 ++++---- .../js/views/search/tree/GlossaryTreeLayoutView.js | 12 +++++++++++- 13 files changed, 95 insertions(+), 20 deletions(-) diff --git a/dashboardv2/public/css/scss/override.scss b/dashboardv2/public/css/scss/override.scss index 188ac1a..69ac36d 100644 --- a/dashboardv2/public/css/scss/override.scss +++ b/dashboardv2/public/css/scss/override.scss @@ -549,4 +549,7 @@ div.columnmanager-dropdown-container { border-color: $color_havelock_blue_approx; } } +} +.dropzone .dz-preview .dz-details .dz-filename { + padding-top: 20px; } \ No newline at end of file diff --git a/dashboardv2/public/js/templates/glossary/GlossaryLayoutView_tmpl.html b/dashboardv2/public/js/templates/glossary/GlossaryLayoutView_tmpl.html index 67488f8..f3e8797 100644 --- a/dashboardv2/public/js/templates/glossary/GlossaryLayoutView_tmpl.html +++ b/dashboardv2/public/js/templates/glossary/GlossaryLayoutView_tmpl.html @@ -32,7 +32,7 @@ <button type="button" data-toggle="dropdown" class="btn btn-action btn-md dropdown-toggle" type="button"><i class="fa fa-paperclip"></i></button> <ul class="dropdown-menu"> <li><a href="{{importTmplUrl}}">Download Import template</a></li> - <li><a href="javascript:void(0)" data-id="importGlossary">Import Glossary</a></li> + <li><a href="javascript:void(0)" data-id="importGlossary">Import Glossary Term</a></li> </ul> </div> <!-- --> diff --git a/dashboardv2/public/js/templates/site/Header.html b/dashboardv2/public/js/templates/site/Header.html index 48aa247..c2835ca 100644 --- a/dashboardv2/public/js/templates/site/Header.html +++ b/dashboardv2/public/js/templates/site/Header.html @@ -55,7 +55,7 @@ <a tabindex="-1" href="javascript:void(0)">Glossary</span></a> <ul class="dropdown-menu"> <li><a href="{{glossaryImportTempUrl}}">Download Import template</a></li> - <li data-id='glossaryImport'><a href="javascript:void(0)">Import Glossary</a></li> + <li data-id='glossaryImport'><a href="javascript:void(0)">Import Glossary Term</a></li> </ul> </li> </ul> diff --git a/dashboardv2/public/js/views/glossary/AssignTermLayoutView.js b/dashboardv2/public/js/views/glossary/AssignTermLayoutView.js index e9da313..e9c4a71 100644 --- a/dashboardv2/public/js/views/glossary/AssignTermLayoutView.js +++ b/dashboardv2/public/js/views/glossary/AssignTermLayoutView.js @@ -137,7 +137,12 @@ define(['require', return isMatch }, onFinished: function(event, currentIndex) { - that.assignTerm(); + var $assignBtn = $(this).find('a[href="#finish"]'); + if(!$assignBtn.attr('disabled')){ + $assignBtn.attr('disabled', true).showButtonLoader(); + $assignBtn.parent().attr('aria-disabled','true').addClass('disabled'); + that.assignTerm(); + } }, onCanceled: function(event) { that.modal.trigger('cancel'); @@ -146,7 +151,6 @@ define(['require', } }, assignTerm: function() { - this.modal.$el.find('button.ok').showButtonLoader(); this.assignTermError = false; var that = this, data = [], @@ -165,7 +169,9 @@ define(['require', } }, cust_error: function() { - that.modal.$el.find('button.ok').hideButtonLoader(); + var $assignBtn = that.$el.find('a[href="#finish"]'); + $assignBtn.removeAttr('disabled').hideButtonLoader(); + $assignBtn.parent().attr('aria-disabled','false').removeClass('disabled'); that.assignTermError = true; } }, diff --git a/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js b/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js index a5d0e70..5d9ba74 100644 --- a/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js +++ b/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js @@ -156,6 +156,7 @@ define(['require', } if (this.isAssignView && this.glossaryCollection.fullCollection.length) { this.generateTree(); + this.disableNodesList = this.getDisableNodes(); } else { this.getGlossary(); } @@ -186,10 +187,12 @@ define(['require', this.$('.category-view').show(); this.$('.term-view').hide(); this.viewType = "category"; + this.$('.dropdown-toggle').attr('disabled', 'disabled'); } else { this.$('.term-view').show(); this.$('.category-view').hide(); this.viewType = "term"; + this.$('.dropdown-toggle').removeAttr('disabled'); } var setDefaultSelector = function() { if (!that.value) { @@ -439,6 +442,17 @@ define(['require', this.triggerUrl(); } }, + getDisableNodes: function() { + var disableNodesSelection = []; + if (this.options && this.options.isAssignAttributeRelationView) { + var disableTerms = (this.options.termData && this.options.selectedTermAttribute) ? this.options.termData[this.options.selectedTermAttribute] : null; + disableNodesSelection = _.map(disableTerms, function(obj) { + return obj.termGuid; + }); + disableNodesSelection.push(this.options.termData.guid); + } + return disableNodesSelection; + }, generateTree: function() { var $termTree = this.ui.termTree, $categoryTree = this.ui.categoryTree, @@ -453,7 +467,11 @@ define(['require', return; } if (that.isAssignView) { - return obj != "Glossary" ? true : false; + var isDisableNode = false; + if (that.disableNodesList) { + isDisableNode = (that.disableNodesList.indexOf(node.original.guid) > -1) ? true : false; + } + return (obj != "Glossary" && !isDisableNode) ? true : false; } else { return obj != "NoAction" ? true : false; } @@ -545,6 +563,7 @@ define(['require', treeLoaded({ "$el": $el, "type": type }); }); }, + initializeTermTree = function() { if ($termTree.data('jstree')) { $('.termPopover').popover('destroy'); diff --git a/dashboardv2/public/js/views/import/ImportLayoutView.js b/dashboardv2/public/js/views/import/ImportLayoutView.js index 159e779..8f7524e 100644 --- a/dashboardv2/public/js/views/import/ImportLayoutView.js +++ b/dashboardv2/public/js/views/import/ImportLayoutView.js @@ -55,10 +55,10 @@ define([ _.extend(this, _.pick(options, "callback", "isGlossary")); var that = this; this.modal = new Modal({ - title: this.isGlossary ? "Import Glossary" : "Import Business Metadata", + title: this.isGlossary ? "Import Glossary Term" : "Import Business Metadata", content: this, cancelText: "Cancel", - okText: "upload", + okText: "Upload", allowCancel: true, okCloses: false, mainClass: "dropzone-modal" @@ -75,7 +75,7 @@ define([ bindEvents: function() { var that = this; $('body').on('click', '.importBackBtn', function() { - var modalTitle = that.isGlossary ? "Import Glossary" : "Import Business Metadata"; + var modalTitle = that.isGlossary ? "Import Glossary Term" : "Import Business Metadata"; that.toggleErrorAndDropZoneView({ title: modalTitle, isErrorView: false }); }); }, @@ -143,7 +143,7 @@ define([ Utils.defaultErrorHandler(null, responseObj, { defaultErrorMessage: (response.errorMessage) || response }); that.modal.$el.find("button.ok").attr("disabled", false); }, - dictDefaultMessage: "Drop files here or click to upload.", + dictDefaultMessage: "Drop files here or click to upload(.csv, .xls, .xlsx).", headers: headers }); }, diff --git a/dashboardv3/public/css/scss/leftsidebar.scss b/dashboardv3/public/css/scss/leftsidebar.scss index d547f39..44235ba 100644 --- a/dashboardv3/public/css/scss/leftsidebar.scss +++ b/dashboardv3/public/css/scss/leftsidebar.scss @@ -253,6 +253,17 @@ } } + .disable-list-option { + + &, + &:focus, + &:hover * { + background-color: transparent !important; + color: $gray !important; + cursor: not-allowed; + } + } + .clear-icon { color: $color_ironside_gray_approx !important; position: absolute; diff --git a/dashboardv3/public/css/scss/override.scss b/dashboardv3/public/css/scss/override.scss index 2003bf0..8a89b48 100644 --- a/dashboardv3/public/css/scss/override.scss +++ b/dashboardv3/public/css/scss/override.scss @@ -551,4 +551,8 @@ div.columnmanager-dropdown-container { border-color: $color_havelock_blue_approx; } } +} + +.dropzone .dz-preview .dz-details .dz-filename { + padding-top: 20px; } \ No newline at end of file diff --git a/dashboardv3/public/js/templates/search/tree/GlossaryTreeLayoutView_tmpl.html b/dashboardv3/public/js/templates/search/tree/GlossaryTreeLayoutView_tmpl.html index 0d9994e..50716a8 100644 --- a/dashboardv3/public/js/templates/search/tree/GlossaryTreeLayoutView_tmpl.html +++ b/dashboardv3/public/js/templates/search/tree/GlossaryTreeLayoutView_tmpl.html @@ -32,7 +32,7 @@ </li> <li data-id="downloadTemplate" data-type="term"><i class="fa fa-download"></i> <span><a href="{{importTmplUrl}}"><span>Download Import template</span></a></span> </li> - <li data-id="importGlossary" data-type="term"> <i class="fa fa-upload"></i><a href="javascript:void(0)"><span>Import Glossary</span></a> + <li data-id="importGlossary" data-type="term"> <i class="fa fa-upload"></i><a href="javascript:void(0)"><span>Import Glossary Term</span></a> </li> </ul> </button> diff --git a/dashboardv3/public/js/views/glossary/AssignTermLayoutView.js b/dashboardv3/public/js/views/glossary/AssignTermLayoutView.js index e9da313..e9c4a71 100644 --- a/dashboardv3/public/js/views/glossary/AssignTermLayoutView.js +++ b/dashboardv3/public/js/views/glossary/AssignTermLayoutView.js @@ -137,7 +137,12 @@ define(['require', return isMatch }, onFinished: function(event, currentIndex) { - that.assignTerm(); + var $assignBtn = $(this).find('a[href="#finish"]'); + if(!$assignBtn.attr('disabled')){ + $assignBtn.attr('disabled', true).showButtonLoader(); + $assignBtn.parent().attr('aria-disabled','true').addClass('disabled'); + that.assignTerm(); + } }, onCanceled: function(event) { that.modal.trigger('cancel'); @@ -146,7 +151,6 @@ define(['require', } }, assignTerm: function() { - this.modal.$el.find('button.ok').showButtonLoader(); this.assignTermError = false; var that = this, data = [], @@ -165,7 +169,9 @@ define(['require', } }, cust_error: function() { - that.modal.$el.find('button.ok').hideButtonLoader(); + var $assignBtn = that.$el.find('a[href="#finish"]'); + $assignBtn.removeAttr('disabled').hideButtonLoader(); + $assignBtn.parent().attr('aria-disabled','false').removeClass('disabled'); that.assignTermError = true; } }, diff --git a/dashboardv3/public/js/views/glossary/GlossaryLayoutView.js b/dashboardv3/public/js/views/glossary/GlossaryLayoutView.js index 9b386f3..e1aec21 100644 --- a/dashboardv3/public/js/views/glossary/GlossaryLayoutView.js +++ b/dashboardv3/public/js/views/glossary/GlossaryLayoutView.js @@ -138,6 +138,7 @@ define(['require', } if (this.isAssignView && this.glossaryCollection.fullCollection.length) { this.generateTree(); + this.disableNodesList = this.getDisableNodes(); } else { this.getGlossary(); } @@ -409,6 +410,17 @@ define(['require', this.triggerUrl(); } }, + getDisableNodes: function() { + var disableNodesSelection = []; + if (this.options && this.options.isAssignAttributeRelationView) { + var disableTerms = (this.options.termData && this.options.selectedTermAttribute) ? this.options.termData[this.options.selectedTermAttribute] : null; + disableNodesSelection = _.map(disableTerms, function(obj) { + return obj.termGuid; + }); + disableNodesSelection.push(this.options.termData.guid); + } + return disableNodesSelection; + }, generateTree: function() { var $termTree = this.ui.termTree, $categoryTree = this.ui.categoryTree, @@ -423,7 +435,11 @@ define(['require', return; } if (that.isAssignView) { - return obj != "Glossary" ? true : false; + var isDisableNode = false; + if (that.disableNodesList) { + isDisableNode = (that.disableNodesList.indexOf(node.original.guid) > -1) ? true : false; + } + return (obj != "Glossary" && !isDisableNode) ? true : false; } else { return obj != "NoAction" ? true : false; } diff --git a/dashboardv3/public/js/views/import/ImportLayoutView.js b/dashboardv3/public/js/views/import/ImportLayoutView.js index 159e779..8f7524e 100644 --- a/dashboardv3/public/js/views/import/ImportLayoutView.js +++ b/dashboardv3/public/js/views/import/ImportLayoutView.js @@ -55,10 +55,10 @@ define([ _.extend(this, _.pick(options, "callback", "isGlossary")); var that = this; this.modal = new Modal({ - title: this.isGlossary ? "Import Glossary" : "Import Business Metadata", + title: this.isGlossary ? "Import Glossary Term" : "Import Business Metadata", content: this, cancelText: "Cancel", - okText: "upload", + okText: "Upload", allowCancel: true, okCloses: false, mainClass: "dropzone-modal" @@ -75,7 +75,7 @@ define([ bindEvents: function() { var that = this; $('body').on('click', '.importBackBtn', function() { - var modalTitle = that.isGlossary ? "Import Glossary" : "Import Business Metadata"; + var modalTitle = that.isGlossary ? "Import Glossary Term" : "Import Business Metadata"; that.toggleErrorAndDropZoneView({ title: modalTitle, isErrorView: false }); }); }, @@ -143,7 +143,7 @@ define([ Utils.defaultErrorHandler(null, responseObj, { defaultErrorMessage: (response.errorMessage) || response }); that.modal.$el.find("button.ok").attr("disabled", false); }, - dictDefaultMessage: "Drop files here or click to upload.", + dictDefaultMessage: "Drop files here or click to upload(.csv, .xls, .xlsx).", headers: headers }); }, diff --git a/dashboardv3/public/js/views/search/tree/GlossaryTreeLayoutView.js b/dashboardv3/public/js/views/search/tree/GlossaryTreeLayoutView.js index c96b03b..4a327d8 100644 --- a/dashboardv3/public/js/views/search/tree/GlossaryTreeLayoutView.js +++ b/dashboardv3/public/js/views/search/tree/GlossaryTreeLayoutView.js @@ -80,7 +80,10 @@ define([ }; events["click " + this.ui.importGlossary] = function(e) { e.stopPropagation(); - that.onClickImportGlossary(); + var $target = $(e.target); + if ($target.parents(".disable-list-option").length == 0 && $target.hasClass("disable-list-option") == false) { + that.onClickImportGlossary(); + } }; events['click ' + this.ui.downloadTemplate] = function(e) { e.stopPropagation(); @@ -117,6 +120,13 @@ define([ this.ui.showGlossaryType.attr("data-original-title", (this.isTermView ? "Show Category" : "Show Term")); this.ui.showGlossaryType.tooltip('hide'); this.ui.showGlossaryType.find("i").toggleClass("switch-button"); + if (this.isTermView) { + this.ui.importGlossary.removeClass("disable-list-option").find('a').attr("href", "javascript:void(0)"); + this.ui.downloadTemplate.removeClass("disable-list-option").find('a').attr("href", UrlLinks.glossaryImportTempUrl()); + } else { + this.ui.importGlossary.addClass("disable-list-option").find('a').removeAttr("href"); + this.ui.downloadTemplate.addClass("disable-list-option").find('a').removeAttr("href"); + } this.ui.termSearchTree.jstree(true).refresh(); }, initialize: function(options) {
