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 62451d62a01bf62e2bc50ec7d9585365329086a6 Author: kevalbhatt <[email protected]> AuthorDate: Thu May 21 21:01:38 2020 +0530 ATLAS-3793:- UI: Entity detail page improvement for label, user-define properties, BM panel --- dashboardv2/public/css/scss/panel.scss | 2 +- .../entity/EntityBusinessMetaDataView_tmpl.html | 2 +- .../entity/EntityLabelDefineView_tmpl.html | 11 ++++----- .../entity/EntityUserDefineItemView_tmpl.html | 4 +++- .../entity/EntityUserDefineView_tmpl.html | 24 ++++--------------- .../js/views/entity/EntityBusinessMetaDataView.js | 28 +++++++++++++++------- .../js/views/entity/EntityLabelDefineView.js | 10 +++++++- .../js/views/entity/EntityUserDefineItemView.js | 18 +++++++++++--- .../public/js/views/entity/EntityUserDefineView.js | 26 ++++++++++++++++---- .../entity/EntityBusinessMetaDataView_tmpl.html | 2 +- .../entity/EntityLabelDefineView_tmpl.html | 11 ++++----- .../entity/EntityUserDefineItemView_tmpl.html | 4 +++- .../entity/EntityUserDefineView_tmpl.html | 24 ++++--------------- dashboardv3/public/js/utils/Utils.js | 9 ++++--- .../js/views/entity/EntityBusinessMetaDataView.js | 28 +++++++++++++++------- .../js/views/entity/EntityLabelDefineView.js | 10 +++++++- .../js/views/entity/EntityUserDefineItemView.js | 18 +++++++++++--- .../public/js/views/entity/EntityUserDefineView.js | 26 ++++++++++++++++---- 18 files changed, 163 insertions(+), 94 deletions(-) diff --git a/dashboardv2/public/css/scss/panel.scss b/dashboardv2/public/css/scss/panel.scss index a8908e3..9a94221 100644 --- a/dashboardv2/public/css/scss/panel.scss +++ b/dashboardv2/public/css/scss/panel.scss @@ -143,9 +143,9 @@ .panel-default.custom-panel>.panel-actions { float: right; margin-top: 15px; + margin-right: 10px; button { - margin-right: 10px; margin-top: -4px; } } diff --git a/dashboardv2/public/js/templates/entity/EntityBusinessMetaDataView_tmpl.html b/dashboardv2/public/js/templates/entity/EntityBusinessMetaDataView_tmpl.html index 0e4c2aa..fd00abf 100644 --- a/dashboardv2/public/js/templates/entity/EntityBusinessMetaDataView_tmpl.html +++ b/dashboardv2/public/js/templates/entity/EntityBusinessMetaDataView_tmpl.html @@ -15,7 +15,7 @@ * limitations under the License. --> <div class="panel panel-default custom-panel expand_collapse_panel-icon"> - <div class="panel-heading" data-toggle="collapse" href="#businessMetadataCollapse" aria-expanded="false" style="width: 70%;"> + <div class="panel-heading main-parent collapsed" data-toggle="collapse" href="#businessMetadataCollapse" aria-expanded="false" style="width: 70%;"> <h4 class="panel-title"> <a>Business Metadata</a> </h4> diff --git a/dashboardv2/public/js/templates/entity/EntityLabelDefineView_tmpl.html b/dashboardv2/public/js/templates/entity/EntityLabelDefineView_tmpl.html index f122fe9..d3ca9ad 100644 --- a/dashboardv2/public/js/templates/entity/EntityLabelDefineView_tmpl.html +++ b/dashboardv2/public/js/templates/entity/EntityLabelDefineView_tmpl.html @@ -17,7 +17,7 @@ <div class="panel-group" id="accordion"> <div class="panel panel-default custom-panel expand_collapse_panel-icon" data-id="userDefineLabel"> {{#ifCond labels.length "===" 0}} - <div class="panel-heading collapsed" data-toggle="collapse" href={{div_1.anchor}} aria-expanded="false" style="width: 70%"> + <div class="panel-heading collapsed" data-toggle="collapse" href={{div_1.anchor}} {{#ifCond swapItem "===" true}} aria-expanded="true" {{else}} aria-expanded="false" {{/ifCond}} style="width: 70%"> <h4 class="panel-title"> <a>Labels </a> </h4> @@ -38,12 +38,13 @@ {{#ifCond readOnlyEntity "===" false}} <div class="panel-actions"> {{#ifCond swapItem "!==" true}} - <button class="btn btn-action btn-sm" data-id="addLabels" {{#ifCond labels.length "===" 0}} data-original-title="Add User-Defined Labels" {{else}} data-original-title="Edit User-Defined Labels" {{/ifCond}}> + <button class="btn btn-action btn-sm" data-id="addLabels"> {{#ifCond labels.length "===" 0}} Add {{else}} Edit {{/ifCond}} </button> {{/ifCond}} {{#ifCond saveLabels "===" true}} - <button class="btn btn-action btn-sm" data-id="saveLabels" data-original-title="Save User-Defined Labels">Save</button> + <button class="btn btn-action btn-sm" data-id="saveLabels">Save</button> + <button class="btn btn-action btn-sm" data-id="cancel">Cancel</button> {{/ifCond}} </div> {{/ifCond}} @@ -56,9 +57,7 @@ <select class="form-control" data-id="addLabelOptions" multiple="multiple"></select> {{else}} <div class="badge-container"> - {{#each labels}} - <label class="btn btn-action btn-sm btn-blue no-pointer">{{this}}</label> - {{/each}} + No labels have been created yet. To add a labels, click <a href="javascript:void(0)" data-id="addLabels">here</a> </div> {{/ifCond}} </div> diff --git a/dashboardv2/public/js/templates/entity/EntityUserDefineItemView_tmpl.html b/dashboardv2/public/js/templates/entity/EntityUserDefineItemView_tmpl.html index 439943d..edc6ba2 100644 --- a/dashboardv2/public/js/templates/entity/EntityUserDefineItemView_tmpl.html +++ b/dashboardv2/public/js/templates/entity/EntityUserDefineItemView_tmpl.html @@ -41,7 +41,9 @@ <p class="errorMsg" data-id="charSupportMsg"></p> </td> </tr> + {{#if allValueRemovedUpdate}} + All properties has been removed. To add a property, click <a href="javascript:void(0)" data-id="addItem">here</a>{{else}} {{#ifCond items.length "===" 0}} No properties have been created yet. To add a property, click <a href="javascript:void(0)" data-id="addItem">here</a> - {{/ifCond}} + {{/ifCond}}{{/if}} </table> \ No newline at end of file diff --git a/dashboardv2/public/js/templates/entity/EntityUserDefineView_tmpl.html b/dashboardv2/public/js/templates/entity/EntityUserDefineView_tmpl.html index 8c90c5a..4434300 100644 --- a/dashboardv2/public/js/templates/entity/EntityUserDefineView_tmpl.html +++ b/dashboardv2/public/js/templates/entity/EntityUserDefineView_tmpl.html @@ -17,7 +17,7 @@ <div class="panel-group" id="accordion"> <div class="panel panel-default custom-panel expand_collapse_panel-icon" data-id="userDefine"> {{#ifCond customAttibutes.length "===" 0}} - <div class="panel-heading collapsed" data-toggle="collapse" href={{divId_1.anchor}} aria-expanded="false" style="width: 70%"> + <div class="panel-heading collapsed" data-toggle="collapse" href={{divId_1.anchor}} {{#ifCond swapItem "===" true}} aria-expanded="true" {{else}} aria-expanded="false" {{/ifCond}} style="width: 70%"> <h4 class="panel-title"> <a>User-defined properties </a> </h4> @@ -38,12 +38,13 @@ {{#ifCond readOnlyEntity "===" false}} <div class="panel-actions"> {{#ifCond swapItem "!==" true}} - <button class="btn btn-action btn-sm" data-id="addAttr" {{#ifCond customAttibutes.length "===" 0}} data-original-title="Add User-defined properties" {{else}} data-original-title="Edit User-defined properties" {{/ifCond}}> + <button class="btn btn-action btn-sm" data-id="addAttr"> {{#ifCond customAttibutes.length "===" 0}} Add {{else}} Edit {{/ifCond}} </button> {{/ifCond}} {{#ifCond saveAttrItems "===" true}} - <button class="btn btn-action btn-sm" data-id="saveAttrItems" data-original-title="Save User-defined properties">Save</button> + <button class="btn btn-action btn-sm" data-id="saveAttrItems">Save</button> + <button class="btn btn-action btn-sm" data-id="cancel">Cancel</button> {{/ifCond}} </div> {{/ifCond}} @@ -55,22 +56,7 @@ {{#ifCond swapItem "===" true}} <div id="r_entityUserDefinedItemView"></div> {{else}} - <div class="entity-detail-table"> - <table class="table"> - <tbody> - {{#each customAttibutes}} - <tr> - <td> - <div class="scroll-y">{{key}}</div> - </div> - </td> - <td> - <div class="scroll-y">{{value}}</div> - </td> - </tr> - {{/each}} - </tbody> - </table> + No properties have been created yet. To add a property, click <a href="javascript:void(0)" data-id="addItem">here</a> </div> {{/ifCond}} </div> diff --git a/dashboardv2/public/js/views/entity/EntityBusinessMetaDataView.js b/dashboardv2/public/js/views/entity/EntityBusinessMetaDataView.js index 5bf0e28..0adabed 100644 --- a/dashboardv2/public/js/views/entity/EntityBusinessMetaDataView.js +++ b/dashboardv2/public/js/views/entity/EntityBusinessMetaDataView.js @@ -111,15 +111,15 @@ define([ this.panelOpenClose(); }, panelOpenClose: function() { - var collection = this.editMode ? this.collection : this.actualCollection; + var collection = this.editMode ? this.collection : this.actualCollection, + headingEl = this.$el.find(".panel-heading.main-parent"); if (collection && collection.length === 0) { - this.$el.find(".panel-heading").addClass("collapsed").attr('aria-expanded',false); - this.$el.find(".panel-collapse.collapse").removeClass("in"); this.ui.addBusinessMetadata.text("Add"); } else { this.ui.addBusinessMetadata.text("Edit"); - this.$el.find(".panel-heading").removeClass("collapsed").attr('aria-expanded',true); - this.$el.find(".panel-collapse.collapse").addClass("in"); + if (headingEl.hasClass("collapsed")) { + headingEl.click(); + } } }, validate: function() { @@ -164,12 +164,14 @@ define([ type: "POST", success: function(data) { Utils.notifySuccess({ - content: "One or more Business Metadada attributes" + Messages.getAbbreviationMsg(false, 'editSuccessMessage') + content: "One or more Business Metadada attributes" + Messages.getAbbreviationMsg(true, 'editSuccessMessage') }); that.entity.businessAttributes = data; - this.editMode = false; + that.ui.businessMetadataTree.html(""); + that.editMode = false; that.fetchCollection(); that.onCancel(); + }, complete: function(model, response) { //that.hideLoader(); @@ -239,7 +241,11 @@ define([ }); li += that.associateAttributePanel(obj, attrLi); }); - this.ui.businessMetadataTree.html(li); + var html = li; + if (html === "") { + html = '<div class="col-md-12"> No business metadata have been created yet. To add a business metadata, click <a href="javascript:void(0)" data-id="addBusinessMetadata">here</a></div>'; + } + this.ui.businessMetadataTree.html(html); }, associateAttributePanel: function(obj, tableBody) { return '<div class="panel panel-default custom-panel expand_collapse_panel-icon no-border business-metadata-detail-attr">' + @@ -252,7 +258,11 @@ define([ '</div></div>'; }, onRender: function() { - this.panelOpenClose(); + if (this.actualCollection && this.actualCollection.length) { + this.$el.find(".panel-heading.main-parent").removeClass("collapsed").attr("aria-expanded", "true"); + this.$el.find("#businessMetadataCollapse").addClass("in").removeAttr("style"); + this.ui.addBusinessMetadata.text("Edit"); + } this.renderBusinessMetadata(); } }); diff --git a/dashboardv2/public/js/views/entity/EntityLabelDefineView.js b/dashboardv2/public/js/views/entity/EntityLabelDefineView.js index 678a039..23bcc9f 100644 --- a/dashboardv2/public/js/views/entity/EntityLabelDefineView.js +++ b/dashboardv2/public/js/views/entity/EntityLabelDefineView.js @@ -44,13 +44,15 @@ define(['require', ui: { addLabelOptions: "[data-id='addLabelOptions']", addLabels: "[data-id='addLabels']", - saveLabels: "[data-id='saveLabels']" + saveLabels: "[data-id='saveLabels']", + cancel: "[data-id='cancel']" }, events: function() { var events = {}; events["change " + this.ui.addLabelOptions] = 'onChangeLabelChange'; events["click " + this.ui.addLabels] = 'handleBtnClick'; events["click " + this.ui.saveLabels] = 'saveUserDefinedLabels'; + events["click " + this.ui.cancel] = 'onCancelClick'; return events; }, initialize: function(options) { @@ -140,6 +142,12 @@ define(['require', } this.render(); }, + onCancelClick: function() { + this.labels = this.entityModel.get("labels") || []; + this.swapItem = false; + this.saveLabels = false; + this.render(); + }, saveUserDefinedLabels: function() { var that = this; var entityJson = that.entityModel.toJSON(); diff --git a/dashboardv2/public/js/views/entity/EntityUserDefineItemView.js b/dashboardv2/public/js/views/entity/EntityUserDefineItemView.js index d4db707..bcc0845 100644 --- a/dashboardv2/public/js/views/entity/EntityUserDefineItemView.js +++ b/dashboardv2/public/js/views/entity/EntityUserDefineItemView.js @@ -29,7 +29,8 @@ define(['require', templateHelpers: function() { return { - items: this.items + items: this.items, + allValueRemovedUpdate: this.allValueRemovedUpdate }; }, @@ -62,11 +63,13 @@ define(['require', if (options.items.length === 0) { this.items = [{ key: "", value: "" }]; } else { - this.items = options.items; + this.items = $.extend(true, [], options.items); } + this.updateParentButtonState = options.updateButtonState; }, onRender: function() {}, onAddItemClick: function(e) { + this.allValueRemovedUpdate = false; var el = e.currentTarget; this.items.splice(parseInt(el.dataset.index) + 1, 0, { key: "", value: "" }); this.render(); @@ -74,7 +77,16 @@ define(['require', onDeleteItemClick: function(e) { var el = e.currentTarget; this.items.splice(el.dataset.index, 1); - this.render(); + this.allValueRemovedUpdate = false; + if (this.items.length === 0) { + var updated = this.updateParentButtonState(); + if (updated === false) { + this.allValueRemovedUpdate = true; + this.render(); + } + } else { + this.render(); + } }, onItemKeyChange: function(e) { var el = e.currentTarget; diff --git a/dashboardv2/public/js/views/entity/EntityUserDefineView.js b/dashboardv2/public/js/views/entity/EntityUserDefineView.js index 38d32c2..c76000b 100644 --- a/dashboardv2/public/js/views/entity/EntityUserDefineView.js +++ b/dashboardv2/public/js/views/entity/EntityUserDefineView.js @@ -42,14 +42,16 @@ define(['require', }, ui: { addAttr: "[data-id='addAttr']", - editAttr: "[data-id='editAttr']", - saveAttrItems: "[data-id='saveAttrItems']" + saveAttrItems: "[data-id='saveAttrItems']", + cancel: "[data-id='cancel']", + addItem: "[data-id='addItem']" }, events: function() { var events = {}; events["click " + this.ui.addAttr] = 'onAddAttrClick'; - events["click " + this.ui.editAttr] = 'onEditAttrClick'; + events["click " + this.ui.addItem] = 'onAddAttrClick'; events["click " + this.ui.saveAttrItems] = 'onEditAttrClick'; + events["click " + this.ui.cancel] = 'onCancelClick'; return events; }, initialize: function(options) { @@ -66,9 +68,8 @@ define(['require', onRender: function() {}, renderEntityUserDefinedItems: function() { var that = this; - require(['views/entity/EntityUserDefineItemView'], function(EntityUserDefineItemView) { - that.itemView = new EntityUserDefineItemView({ items: that.customAttibutes }); + that.itemView = new EntityUserDefineItemView({ items: that.customAttibutes, updateButtonState: that.updateButtonState.bind(that) }); that.REntityUserDefinedItemView.show(that.itemView); }); }, @@ -106,6 +107,21 @@ define(['require', this.initialCall = this.customAttibutes.length > 0 ? false : true; this.setAttributeModal(this.itemView); }, + updateButtonState: function() { + if (this.customAttibutes.length === 0) { + this.swapItem = false; + this.saveAttrItems = false; + this.render(); + } else { + return false; + } + }, + onCancelClick: function() { + this.initialCall = false; + this.swapItem = false; + this.saveAttrItems = false; + this.render(); + }, structureAttributes: function(list) { var obj = {} list.map(function(o) { diff --git a/dashboardv3/public/js/templates/entity/EntityBusinessMetaDataView_tmpl.html b/dashboardv3/public/js/templates/entity/EntityBusinessMetaDataView_tmpl.html index 0e4c2aa..fd00abf 100644 --- a/dashboardv3/public/js/templates/entity/EntityBusinessMetaDataView_tmpl.html +++ b/dashboardv3/public/js/templates/entity/EntityBusinessMetaDataView_tmpl.html @@ -15,7 +15,7 @@ * limitations under the License. --> <div class="panel panel-default custom-panel expand_collapse_panel-icon"> - <div class="panel-heading" data-toggle="collapse" href="#businessMetadataCollapse" aria-expanded="false" style="width: 70%;"> + <div class="panel-heading main-parent collapsed" data-toggle="collapse" href="#businessMetadataCollapse" aria-expanded="false" style="width: 70%;"> <h4 class="panel-title"> <a>Business Metadata</a> </h4> diff --git a/dashboardv3/public/js/templates/entity/EntityLabelDefineView_tmpl.html b/dashboardv3/public/js/templates/entity/EntityLabelDefineView_tmpl.html index f122fe9..d3ca9ad 100644 --- a/dashboardv3/public/js/templates/entity/EntityLabelDefineView_tmpl.html +++ b/dashboardv3/public/js/templates/entity/EntityLabelDefineView_tmpl.html @@ -17,7 +17,7 @@ <div class="panel-group" id="accordion"> <div class="panel panel-default custom-panel expand_collapse_panel-icon" data-id="userDefineLabel"> {{#ifCond labels.length "===" 0}} - <div class="panel-heading collapsed" data-toggle="collapse" href={{div_1.anchor}} aria-expanded="false" style="width: 70%"> + <div class="panel-heading collapsed" data-toggle="collapse" href={{div_1.anchor}} {{#ifCond swapItem "===" true}} aria-expanded="true" {{else}} aria-expanded="false" {{/ifCond}} style="width: 70%"> <h4 class="panel-title"> <a>Labels </a> </h4> @@ -38,12 +38,13 @@ {{#ifCond readOnlyEntity "===" false}} <div class="panel-actions"> {{#ifCond swapItem "!==" true}} - <button class="btn btn-action btn-sm" data-id="addLabels" {{#ifCond labels.length "===" 0}} data-original-title="Add User-Defined Labels" {{else}} data-original-title="Edit User-Defined Labels" {{/ifCond}}> + <button class="btn btn-action btn-sm" data-id="addLabels"> {{#ifCond labels.length "===" 0}} Add {{else}} Edit {{/ifCond}} </button> {{/ifCond}} {{#ifCond saveLabels "===" true}} - <button class="btn btn-action btn-sm" data-id="saveLabels" data-original-title="Save User-Defined Labels">Save</button> + <button class="btn btn-action btn-sm" data-id="saveLabels">Save</button> + <button class="btn btn-action btn-sm" data-id="cancel">Cancel</button> {{/ifCond}} </div> {{/ifCond}} @@ -56,9 +57,7 @@ <select class="form-control" data-id="addLabelOptions" multiple="multiple"></select> {{else}} <div class="badge-container"> - {{#each labels}} - <label class="btn btn-action btn-sm btn-blue no-pointer">{{this}}</label> - {{/each}} + No labels have been created yet. To add a labels, click <a href="javascript:void(0)" data-id="addLabels">here</a> </div> {{/ifCond}} </div> diff --git a/dashboardv3/public/js/templates/entity/EntityUserDefineItemView_tmpl.html b/dashboardv3/public/js/templates/entity/EntityUserDefineItemView_tmpl.html index 74dcd91..b1c8a03 100644 --- a/dashboardv3/public/js/templates/entity/EntityUserDefineItemView_tmpl.html +++ b/dashboardv3/public/js/templates/entity/EntityUserDefineItemView_tmpl.html @@ -41,7 +41,9 @@ <p class="errorMsg" data-id="charSupportMsg"></p> </td> </tr> + {{#if allValueRemovedUpdate}} + All properties has been removed. To add a property, click <a href="javascript:void(0)" data-id="addItem">here</a>{{else}} {{#ifCond items.length "===" 0}} No properties have been created yet. To add a property, click <a href="javascript:void(0)" data-id="addItem">here</a> - {{/ifCond}} + {{/ifCond}}{{/if}} </table> \ No newline at end of file diff --git a/dashboardv3/public/js/templates/entity/EntityUserDefineView_tmpl.html b/dashboardv3/public/js/templates/entity/EntityUserDefineView_tmpl.html index 8c90c5a..4434300 100644 --- a/dashboardv3/public/js/templates/entity/EntityUserDefineView_tmpl.html +++ b/dashboardv3/public/js/templates/entity/EntityUserDefineView_tmpl.html @@ -17,7 +17,7 @@ <div class="panel-group" id="accordion"> <div class="panel panel-default custom-panel expand_collapse_panel-icon" data-id="userDefine"> {{#ifCond customAttibutes.length "===" 0}} - <div class="panel-heading collapsed" data-toggle="collapse" href={{divId_1.anchor}} aria-expanded="false" style="width: 70%"> + <div class="panel-heading collapsed" data-toggle="collapse" href={{divId_1.anchor}} {{#ifCond swapItem "===" true}} aria-expanded="true" {{else}} aria-expanded="false" {{/ifCond}} style="width: 70%"> <h4 class="panel-title"> <a>User-defined properties </a> </h4> @@ -38,12 +38,13 @@ {{#ifCond readOnlyEntity "===" false}} <div class="panel-actions"> {{#ifCond swapItem "!==" true}} - <button class="btn btn-action btn-sm" data-id="addAttr" {{#ifCond customAttibutes.length "===" 0}} data-original-title="Add User-defined properties" {{else}} data-original-title="Edit User-defined properties" {{/ifCond}}> + <button class="btn btn-action btn-sm" data-id="addAttr"> {{#ifCond customAttibutes.length "===" 0}} Add {{else}} Edit {{/ifCond}} </button> {{/ifCond}} {{#ifCond saveAttrItems "===" true}} - <button class="btn btn-action btn-sm" data-id="saveAttrItems" data-original-title="Save User-defined properties">Save</button> + <button class="btn btn-action btn-sm" data-id="saveAttrItems">Save</button> + <button class="btn btn-action btn-sm" data-id="cancel">Cancel</button> {{/ifCond}} </div> {{/ifCond}} @@ -55,22 +56,7 @@ {{#ifCond swapItem "===" true}} <div id="r_entityUserDefinedItemView"></div> {{else}} - <div class="entity-detail-table"> - <table class="table"> - <tbody> - {{#each customAttibutes}} - <tr> - <td> - <div class="scroll-y">{{key}}</div> - </div> - </td> - <td> - <div class="scroll-y">{{value}}</div> - </td> - </tr> - {{/each}} - </tbody> - </table> + No properties have been created yet. To add a property, click <a href="javascript:void(0)" data-id="addItem">here</a> </div> {{/ifCond}} </div> diff --git a/dashboardv3/public/js/utils/Utils.js b/dashboardv3/public/js/utils/Utils.js index 28a0bfd..7b957da 100644 --- a/dashboardv3/public/js/utils/Utils.js +++ b/dashboardv3/public/js/utils/Utils.js @@ -240,10 +240,12 @@ define(['require', 'utils/Globals', 'pnotify', 'utils/Messages', 'utils/Enums', } Utils.defaultErrorHandler = function(model, error, options) { var skipDefaultError = null, - defaultErrorMessage = null; + defaultErrorMessage = null, + isHtml = null; if (options) { skipDefaultError = options.skipDefaultError; defaultErrorMessage = options.defaultErrorMessage; + isHtml = options.isHtml; } var redirectToLoginPage = function() { Utils.localStorage.setValue("last_ui_load", "v2"); @@ -266,13 +268,13 @@ define(['require', 'utils/Globals', 'pnotify', 'utils/Messages', 'utils/Enums', }); } } else if (skipDefaultError !== true) { - Utils.serverErrorHandler(error, defaultErrorMessage); + Utils.serverErrorHandler(error, defaultErrorMessage, isHtml); } } else if (skipDefaultError !== true) { Utils.serverErrorHandler(error, defaultErrorMessage); } }; - Utils.serverErrorHandler = function(response, defaultErrorMessage) { + Utils.serverErrorHandler = function(response, defaultErrorMessage, isHtml) { var responseJSON = response ? response.responseJSON : response, message = defaultErrorMessage ? defaultErrorMessage : Messages.defaultErrorMessage if (response && responseJSON) { @@ -281,6 +283,7 @@ define(['require', 'utils/Globals', 'pnotify', 'utils/Messages', 'utils/Enums', var existingError = $(".ui-pnotify-container.alert-danger .ui-pnotify-text").text(); if (existingError !== message) { Utils.notifyError({ + html:isHtml, content: message }); } diff --git a/dashboardv3/public/js/views/entity/EntityBusinessMetaDataView.js b/dashboardv3/public/js/views/entity/EntityBusinessMetaDataView.js index 3fd5a13..0adabed 100644 --- a/dashboardv3/public/js/views/entity/EntityBusinessMetaDataView.js +++ b/dashboardv3/public/js/views/entity/EntityBusinessMetaDataView.js @@ -111,15 +111,15 @@ define([ this.panelOpenClose(); }, panelOpenClose: function() { - var collection = this.editMode ? this.collection : this.actualCollection; + var collection = this.editMode ? this.collection : this.actualCollection, + headingEl = this.$el.find(".panel-heading.main-parent"); if (collection && collection.length === 0) { - this.$el.find(".panel-heading").addClass("collapsed"); - this.$el.find(".panel-collapse.collapse").removeClass("in"); this.ui.addBusinessMetadata.text("Add"); } else { this.ui.addBusinessMetadata.text("Edit"); - this.$el.find(".panel-heading").removeClass("collapsed"); - this.$el.find(".panel-collapse.collapse").addClass("in"); + if (headingEl.hasClass("collapsed")) { + headingEl.click(); + } } }, validate: function() { @@ -164,12 +164,14 @@ define([ type: "POST", success: function(data) { Utils.notifySuccess({ - content: "One or more Business Metadada attributes" + Messages.getAbbreviationMsg(false, 'editSuccessMessage') + content: "One or more Business Metadada attributes" + Messages.getAbbreviationMsg(true, 'editSuccessMessage') }); that.entity.businessAttributes = data; - this.editMode = false; + that.ui.businessMetadataTree.html(""); + that.editMode = false; that.fetchCollection(); that.onCancel(); + }, complete: function(model, response) { //that.hideLoader(); @@ -239,7 +241,11 @@ define([ }); li += that.associateAttributePanel(obj, attrLi); }); - this.ui.businessMetadataTree.html(li); + var html = li; + if (html === "") { + html = '<div class="col-md-12"> No business metadata have been created yet. To add a business metadata, click <a href="javascript:void(0)" data-id="addBusinessMetadata">here</a></div>'; + } + this.ui.businessMetadataTree.html(html); }, associateAttributePanel: function(obj, tableBody) { return '<div class="panel panel-default custom-panel expand_collapse_panel-icon no-border business-metadata-detail-attr">' + @@ -252,7 +258,11 @@ define([ '</div></div>'; }, onRender: function() { - this.panelOpenClose(); + if (this.actualCollection && this.actualCollection.length) { + this.$el.find(".panel-heading.main-parent").removeClass("collapsed").attr("aria-expanded", "true"); + this.$el.find("#businessMetadataCollapse").addClass("in").removeAttr("style"); + this.ui.addBusinessMetadata.text("Edit"); + } this.renderBusinessMetadata(); } }); diff --git a/dashboardv3/public/js/views/entity/EntityLabelDefineView.js b/dashboardv3/public/js/views/entity/EntityLabelDefineView.js index a3e864d..5e5fd6e 100644 --- a/dashboardv3/public/js/views/entity/EntityLabelDefineView.js +++ b/dashboardv3/public/js/views/entity/EntityLabelDefineView.js @@ -44,13 +44,15 @@ define(['require', ui: { addLabelOptions: "[data-id='addLabelOptions']", addLabels: "[data-id='addLabels']", - saveLabels: "[data-id='saveLabels']" + saveLabels: "[data-id='saveLabels']", + cancel: "[data-id='cancel']" }, events: function() { var events = {}; events["change " + this.ui.addLabelOptions] = 'onChangeLabelChange'; events["click " + this.ui.addLabels] = 'handleBtnClick'; events["click " + this.ui.saveLabels] = 'saveUserDefinedLabels'; + events["click " + this.ui.cancel] = 'onCancelClick'; return events; }, initialize: function(options) { @@ -140,6 +142,12 @@ define(['require', } this.render(); }, + onCancelClick: function() { + this.labels = this.entityModel.get("labels") || []; + this.swapItem = false; + this.saveLabels = false; + this.render(); + }, saveUserDefinedLabels: function() { var that = this; var entityJson = that.entityModel.toJSON(); diff --git a/dashboardv3/public/js/views/entity/EntityUserDefineItemView.js b/dashboardv3/public/js/views/entity/EntityUserDefineItemView.js index d4db707..bcc0845 100644 --- a/dashboardv3/public/js/views/entity/EntityUserDefineItemView.js +++ b/dashboardv3/public/js/views/entity/EntityUserDefineItemView.js @@ -29,7 +29,8 @@ define(['require', templateHelpers: function() { return { - items: this.items + items: this.items, + allValueRemovedUpdate: this.allValueRemovedUpdate }; }, @@ -62,11 +63,13 @@ define(['require', if (options.items.length === 0) { this.items = [{ key: "", value: "" }]; } else { - this.items = options.items; + this.items = $.extend(true, [], options.items); } + this.updateParentButtonState = options.updateButtonState; }, onRender: function() {}, onAddItemClick: function(e) { + this.allValueRemovedUpdate = false; var el = e.currentTarget; this.items.splice(parseInt(el.dataset.index) + 1, 0, { key: "", value: "" }); this.render(); @@ -74,7 +77,16 @@ define(['require', onDeleteItemClick: function(e) { var el = e.currentTarget; this.items.splice(el.dataset.index, 1); - this.render(); + this.allValueRemovedUpdate = false; + if (this.items.length === 0) { + var updated = this.updateParentButtonState(); + if (updated === false) { + this.allValueRemovedUpdate = true; + this.render(); + } + } else { + this.render(); + } }, onItemKeyChange: function(e) { var el = e.currentTarget; diff --git a/dashboardv3/public/js/views/entity/EntityUserDefineView.js b/dashboardv3/public/js/views/entity/EntityUserDefineView.js index 38d32c2..c76000b 100644 --- a/dashboardv3/public/js/views/entity/EntityUserDefineView.js +++ b/dashboardv3/public/js/views/entity/EntityUserDefineView.js @@ -42,14 +42,16 @@ define(['require', }, ui: { addAttr: "[data-id='addAttr']", - editAttr: "[data-id='editAttr']", - saveAttrItems: "[data-id='saveAttrItems']" + saveAttrItems: "[data-id='saveAttrItems']", + cancel: "[data-id='cancel']", + addItem: "[data-id='addItem']" }, events: function() { var events = {}; events["click " + this.ui.addAttr] = 'onAddAttrClick'; - events["click " + this.ui.editAttr] = 'onEditAttrClick'; + events["click " + this.ui.addItem] = 'onAddAttrClick'; events["click " + this.ui.saveAttrItems] = 'onEditAttrClick'; + events["click " + this.ui.cancel] = 'onCancelClick'; return events; }, initialize: function(options) { @@ -66,9 +68,8 @@ define(['require', onRender: function() {}, renderEntityUserDefinedItems: function() { var that = this; - require(['views/entity/EntityUserDefineItemView'], function(EntityUserDefineItemView) { - that.itemView = new EntityUserDefineItemView({ items: that.customAttibutes }); + that.itemView = new EntityUserDefineItemView({ items: that.customAttibutes, updateButtonState: that.updateButtonState.bind(that) }); that.REntityUserDefinedItemView.show(that.itemView); }); }, @@ -106,6 +107,21 @@ define(['require', this.initialCall = this.customAttibutes.length > 0 ? false : true; this.setAttributeModal(this.itemView); }, + updateButtonState: function() { + if (this.customAttibutes.length === 0) { + this.swapItem = false; + this.saveAttrItems = false; + this.render(); + } else { + return false; + } + }, + onCancelClick: function() { + this.initialCall = false; + this.swapItem = false; + this.saveAttrItems = false; + this.render(); + }, structureAttributes: function(list) { var obj = {} list.map(function(o) {
