You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by kb...@apache.org on 2020/05/21 16:49:24 UTC
[atlas] 04/05: ATLAS-3793:- UI: Entity detail page improvement for
label, user-define properties, BM panel
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 <kb...@apache.org>
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) {