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
The following commit(s) were added to refs/heads/master by this push:
new 5e8b7f3 ATLAS-3851:- UI: Remove hourglass icon from in progress entity
5e8b7f3 is described below
commit 5e8b7f34a75e7b433ff9404fbb973cea04d8f2d4
Author: kevalbhatt <[email protected]>
AuthorDate: Thu Jun 18 00:01:30 2020 +0530
ATLAS-3851:- UI: Remove hourglass icon from in progress entity
---
dashboardv2/public/css/scss/business-metadata.scss | 29 +++++++
dashboardv2/public/css/scss/common.scss | 34 ++++++---
dashboardv2/public/css/scss/theme.scss | 88 ----------------------
.../detail_page/DetailPageLayoutView_tmpl.html | 2 +-
.../EntityBusinessMetaDataItemView_tmpl.html | 2 +-
.../js/templates/graph/LineageLayoutView_tmpl.html | 1 -
dashboardv2/public/js/utils/CommonViewFunction.js | 16 ++--
.../BusinessMetadataAttributeItemView.js | 4 +-
.../BusinessMetadataDetailLayoutView.js | 2 +-
.../BusinessMetadataTableLayoutView.js | 4 +-
.../CreateBusinessMetadataLayoutView.js | 2 +-
.../business_metadata/EnumCreateUpdateItemView.js | 6 +-
.../js/views/detail_page/DetailPageLayoutView.js | 17 ++---
.../js/views/entity/CreateEntityLayoutView.js | 6 +-
.../views/entity/EntityBusinessMetaDataItemView.js | 39 +++++-----
.../js/views/entity/EntityBusinessMetaDataView.js | 10 +--
.../js/views/entity/EntityLabelDefineView.js | 6 +-
.../js/views/entity/EntityUserDefineItemView.js | 2 +-
.../js/views/glossary/GlossaryDetailLayoutView.js | 12 +--
.../public/js/views/glossary/GlossaryLayoutView.js | 2 +-
.../glossary/TermRelationAttributeLayoutView.js | 2 +-
dashboardv2/public/js/views/graph/LineageUtils.js | 12 ---
.../js/views/graph/PropagationPropertyModal.js | 2 +-
.../js/views/graph/RelationshipLayoutView.js | 16 ++--
.../public/js/views/schema/SchemaLayoutView.js | 4 +-
.../public/js/views/search/SearchLayoutView.js | 4 +-
.../js/views/search/SearchResultLayoutView.js | 18 ++---
dashboardv2/public/js/views/site/Header.js | 3 +-
dashboardv2/public/js/views/tag/AddTagModalView.js | 6 +-
.../js/views/tag/TagAttributeDetailLayoutView.js | 2 +-
.../js/views/tag/TagDetailTableLayoutView.js | 2 +-
dashboardv2/public/js/views/tag/TagLayoutView.js | 2 +-
dashboardv3/public/css/scss/business-metadata.scss | 29 +++++++
dashboardv3/public/css/scss/common.scss | 29 ++++---
dashboardv3/public/css/scss/theme.scss | 84 ---------------------
.../detail_page/DetailPageLayoutView_tmpl.html | 2 +-
.../EntityBusinessMetaDataItemView_tmpl.html | 2 +-
.../js/templates/graph/LineageLayoutView_tmpl.html | 1 -
dashboardv3/public/js/utils/CommonViewFunction.js | 16 ++--
.../BusinessMetadataAttributeItemView.js | 4 +-
.../BusinessMetadataDetailLayoutView.js | 2 +-
.../BusinessMetadataTableLayoutView.js | 4 +-
.../CreateBusinessMetadataLayoutView.js | 2 +-
.../business_metadata/EnumCreateUpdateItemView.js | 6 +-
.../js/views/detail_page/DetailPageLayoutView.js | 17 ++---
.../js/views/entity/CreateEntityLayoutView.js | 6 +-
.../views/entity/EntityBusinessMetaDataItemView.js | 39 +++++-----
.../js/views/entity/EntityBusinessMetaDataView.js | 8 +-
.../js/views/entity/EntityLabelDefineView.js | 6 +-
.../js/views/entity/EntityUserDefineItemView.js | 2 +-
.../js/views/glossary/GlossaryDetailLayoutView.js | 12 +--
.../glossary/TermRelationAttributeLayoutView.js | 2 +-
dashboardv3/public/js/views/graph/LineageUtils.js | 12 ---
.../js/views/graph/PropagationPropertyModal.js | 2 +-
.../js/views/graph/RelationshipLayoutView.js | 15 ++--
.../public/js/views/schema/SchemaLayoutView.js | 4 +-
.../js/views/search/GlobalSearchLayoutView.js | 4 +-
.../js/views/search/SearchDefaultLayoutView.js | 2 +-
.../views/search/SearchFilterBrowseLayoutView.js | 11 +--
.../js/views/search/SearchResultLayoutView.js | 18 ++---
.../search/tree/ClassificationTreeLayoutView.js | 2 +-
.../search/tree/CustomFilterTreeLayoutView.js | 2 +-
dashboardv3/public/js/views/tag/AddTagModalView.js | 6 +-
.../js/views/tag/TagAttributeDetailLayoutView.js | 2 +-
.../js/views/tag/TagDetailTableLayoutView.js | 2 +-
65 files changed, 284 insertions(+), 428 deletions(-)
diff --git a/dashboardv2/public/css/scss/business-metadata.scss
b/dashboardv2/public/css/scss/business-metadata.scss
index 9507b83..6ed774d 100644
--- a/dashboardv2/public/css/scss/business-metadata.scss
+++ b/dashboardv2/public/css/scss/business-metadata.scss
@@ -21,6 +21,7 @@
>li:first-child {
font-weight: 600;
+ word-break: break-all;
}
.business-metadata-tree-child {
@@ -38,6 +39,26 @@
margin-top: 10px;
font-weight: 100;
}
+
+ .custom-table {
+ &:not(.bm-create) {
+ .custom-tr {
+
+ .custom-col-1 {
+ width: calc(50% - 55px);
+
+ .select2-selection--multiple .select2-selection__rendered {
+ overflow: scroll;
+ }
+ }
+
+ .custom-col-2 {
+ width: 45px;
+ }
+ }
+ }
+ }
+
}
.business-metadata-options.dropdown {
@@ -165,6 +186,8 @@
.panel-title {
font-size: 14px;
+ word-break: break-all;
+ width: inherit;
a:hover {
color: #686868 !important;
@@ -176,4 +199,10 @@
.btn-group>button {
color: #686868 !important;
}
+
+ .business-metadata-detail-attr-key {
+ width: 30%;
+ word-break: break-word;
+
+ }
}
\ No newline at end of file
diff --git a/dashboardv2/public/css/scss/common.scss
b/dashboardv2/public/css/scss/common.scss
index 0844124..9e3c904 100644
--- a/dashboardv2/public/css/scss/common.scss
+++ b/dashboardv2/public/css/scss/common.scss
@@ -14,9 +14,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-
/* common.scss */
-
.readOnly {
span,
@@ -221,10 +219,18 @@ pre {
.custom-table {
width: 100%;
+ display: flex;
+
+ tbody {
+ display: flex;
+ flex-flow: column;
+ width: 100%;
+ }
.custom-tr {
margin-left: 15px;
- margin-right: 15px;
+ display: flex;
+ width: calc(100% - 15px);
.custom-col-0,
.custom-col-1,
@@ -242,20 +248,30 @@ pre {
.custom-col-0 {
- text-align: center;
- vertical-align: middle;
line-height: 31px;
- width: 3%;
+ width: 9px;
+ padding: 0px 2px;
}
.custom-col-1 {
- width: 39%;
+ width: calc(50% - 90px);
+ flex-grow: 2;
+
+ &:first-child {
+ width: 30% !important;
+ flex-grow: 1;
+ }
}
.custom-col-2 {
text-align: center;
- width: 17%;
- margin-left: 1%;
+ width: 80px;
+ padding-left: 10px;
+
+ &>button {
+ padding: 7px 10px;
+ margin-bottom: 10px;
+ }
}
}
}
diff --git a/dashboardv2/public/css/scss/theme.scss
b/dashboardv2/public/css/scss/theme.scss
index 6646a45..045a461 100644
--- a/dashboardv2/public/css/scss/theme.scss
+++ b/dashboardv2/public/css/scss/theme.scss
@@ -546,94 +546,6 @@ hr[size="10"] {
border-bottom-color: #000;
}
-td.searchTableName:hover {
- .isIncomplete {
- &.show.search-result-page {
- i {
- left: 7px;
- }
- }
- }
-}
-
-.globalsearchImgItem.isIncomplete {
- display: inline-block !important;
- position: relative;
-
- i.fa {
- left: 10px;
- top: 7px;
- font-size: 12px;
- }
-}
-
-.isIncomplete {
- &.show {
- img {
- opacity: .2;
- //animation: blink 2.5s infinite;
- }
-
- i.fa {
- display: block;
- }
-
- .entity-icon-box {
- background: none;
-
- i.fa {
- top: 27px;
- font-size: 18px;
- }
- }
-
-
- foreignObject {
- display: block;
-
- i.fa {
- font-size: 15px;
- top: 17px;
- left: 18.5px;
- }
- }
-
- image,
- circle {
- opacity: 0.2;
- //animation: blink 2.5s infinite;
- }
-
- &.search-result-page {
- position: relative;
-
- i {
- left: 13px;
- font-size: 9px;
- top: 5px;
- }
-
- }
-
- }
-
- foreignObject {
- display: none;
- }
-
- i.fa {
- color: #898989;
- display: none;
- text-align: center;
- font-size: 16px;
- top: 0;
- position: absolute;
- z-index: 1;
- left: calc(50% - 8px);
- }
-}
-
-
.dropdown-menu.multi-level {
.dropdown-submenu {
position: relative;
diff --git
a/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
b/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
index 3747f8e..824dbdc 100644
--- a/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
@@ -19,7 +19,7 @@
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
<div class="entityDetail form-horizontal col-sm-12">
- <h1 class="title isIncomplete">
+ <h1 class="title">
<div data-id="entityIcon" class="entity-icon-box
position-relative"></div>
<span data-id="title"></span>
</h1> {{#if entityUpdate}}
diff --git
a/dashboardv2/public/js/templates/entity/EntityBusinessMetaDataItemView_tmpl.html
b/dashboardv2/public/js/templates/entity/EntityBusinessMetaDataItemView_tmpl.html
index 3338fd5..0b92cb1 100644
---
a/dashboardv2/public/js/templates/entity/EntityBusinessMetaDataItemView_tmpl.html
+++
b/dashboardv2/public/js/templates/entity/EntityBusinessMetaDataItemView_tmpl.html
@@ -15,7 +15,7 @@
* limitations under the License.
-->
{{#ifCond model "has" "isNew"}}
-<table class="custom-table" style="font-weight: 100;">
+<table class="custom-table bm-create" style="font-weight: 100;">
<tr class="custom-tr">
<td class="custom-col-1">
{{{callmyfunction getBusinessMetadataDroupdown
businessMetadataCollection}}}
diff --git a/dashboardv2/public/js/templates/graph/LineageLayoutView_tmpl.html
b/dashboardv2/public/js/templates/graph/LineageLayoutView_tmpl.html
index f14abba..8679c3b 100644
--- a/dashboardv2/public/js/templates/graph/LineageLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/graph/LineageLayoutView_tmpl.html
@@ -139,7 +139,6 @@
</div>
<div class="legends pull-left" style="height: 25px; padding: 2px;">
<span style="margin-right: 8px; color:#fb4200;"><i class="fa
fa-circle-o fa-fw"></i>Current Entity</span>
- <span style="margin-right: 8px;"><i class="fa fa-hourglass-half
fa-fw"></i>In Progress</span>
<span style="margin-right: 8px; color:#df9b00;"><i class="fa
fa-long-arrow-right fa-fw"></i>Lineage</span>
<span style="margin-right: 8px; color:#fb4200;"><i class="fa
fa-long-arrow-right fa-fw"></i>Impact</span>
</div>
diff --git a/dashboardv2/public/js/utils/CommonViewFunction.js
b/dashboardv2/public/js/utils/CommonViewFunction.js
index d99dd2c..a1c5ad3 100644
--- a/dashboardv2/public/js/utils/CommonViewFunction.js
+++ b/dashboardv2/public/js/utils/CommonViewFunction.js
@@ -221,9 +221,9 @@ define(['require', 'utils/Utils', 'modules/Modal',
'utils/Messages', 'utils/Enum
tempLink += '<div data-id="' + fetchId + '"><div
class="value-loader"></div></div>';
} else {
if (inputOutputField.typeName ==
"AtlasGlossaryTerm") {
- tempLink += '<a href="#!/glossary/' + id +
'?guid=' + id + '&gType=term&viewType=term&fromView=entity">' + getValue(name)
+ '</a>'
+ tempLink += '<a href="#!/glossary/' + id +
'?guid=' + id + '&gType=term&viewType=term&fromView=entity">' + name + '</a>'
} else {
- tempLink += '<a href="#!/detailPage/' + id +
'">' + getValue(name) + '</a>'
+ tempLink += '<a href="#!/detailPage/' + id +
'">' + name + '</a>'
}
}
}
@@ -254,7 +254,6 @@ define(['require', 'utils/Utils', 'modules/Modal',
'utils/Messages', 'utils/Enum
valueObjectKeysList = _.sortBy(valueObjectKeysList);
}
valueObjectKeysList.map(function(key) {
- key = _.escape(key);
if (key == "profileData") {
return;
}
@@ -276,8 +275,6 @@ define(['require', 'utils/Utils', 'modules/Modal',
'utils/Messages', 'utils/Enum
var val = "";
if (_.isObject(valueObject[key])) {
val = keyValue
- } else if (Utils.isUrl(keyValue)) {
- val = '<a target="_blank" class="blue-link" href="' +
_.escape(keyValue) + '">' + getValue(keyValue) + '</a>';
} else if (key === 'guid' || key === "__guid") {
if (options.fromAdminAudit) {
val = getValue(keyValue);
@@ -322,9 +319,9 @@ define(['require', 'utils/Utils', 'modules/Modal',
'utils/Messages', 'utils/Enum
var className = "btn btn-action btn-sm btn-blue btn-icon",
deleteIcon = "";
if (obj.guid === tag.entityGuid) {
- deleteIcon = '<i class="fa fa-times" data-id="delete"
data-assetname="' + entityName + '"data-name="' + tag.typeName + '"
data-type="tag" data-guid="' + obj.guid + '" ></i>';
+ deleteIcon = '<i class="fa fa-times" data-id="delete"
data-assetname="' + entityName + '" data-name="' + tag.typeName + '"
data-type="tag" data-guid="' + obj.guid + '" ></i>';
} else if (obj.guid !== tag.entityGuid && tag.entityStatus ===
"DELETED") {
- deleteIcon = '<i class="fa fa-times" data-id="delete"
data-assetname="' + entityName + '"data-name="' + tag.typeName + '"
data-type="tag" data-entityguid="' + tag.entityGuid + '" data-guid="' +
obj.guid + '" ></i>';
+ deleteIcon = '<i class="fa fa-times" data-id="delete"
data-assetname="' + entityName + '" data-name="' + tag.typeName + '"
data-type="tag" data-entityguid="' + tag.entityGuid + '" data-guid="' +
obj.guid + '" ></i>';
} else {
className += " propagte-classification";
}
@@ -358,9 +355,10 @@ define(['require', 'utils/Utils', 'modules/Modal',
'utils/Messages', 'utils/Enum
entityName = Utils.getName(obj);
if (terms) {
terms.map(function(term) {
+ var displayText = _.escape(term.displayText);
var className = "btn btn-action btn-sm btn-blue btn-icon",
- deleteIcon = '<i class="fa fa-times" data-id="delete"
data-assetname="' + entityName + '"data-name="' + term.displayText + '"
data-type="term" data-guid="' + obj.guid + '" data-termGuid="' + term.termGuid
+ '" ></i>',
- termString = '<a class="' + className + '"
data-id="termClick"><span title="' + _.escape(term.displayText) + '">' +
_.escape(term.displayText) + '</span>' + deleteIcon + '</a>';
+ deleteIcon = '<i class="fa fa-times" data-id="delete"
data-assetname="' + entityName + '" data-name="' + displayText + '"
data-type="term" data-guid="' + obj.guid + '" data-termGuid="' + term.termGuid
+ '" ></i>',
+ termString = '<a class="' + className + '"
data-id="termClick"><span title="' + displayText + '">' + displayText +
'</span>' + deleteIcon + '</a>';
if (count >= 1) {
popTerm += termString;
} else {
diff --git
a/dashboardv2/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js
b/dashboardv2/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js
index f22dd05..5190db0 100644
---
a/dashboardv2/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js
+++
b/dashboardv2/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js
@@ -233,8 +233,8 @@ define(['require',
selectedEnumValues = selectedEnum ?
selectedEnum.get('elementDefs') : null,
savedValues = [];
_.each(selectedEnumValues, function(enumVal, index) {
- selectedValues.push(_.unescape(enumVal.value));
- enumValues += "<option>" + enumVal.value + "</option>";
+ selectedValues.push(enumVal.value);
+ enumValues += "<option>" + _.escape(enumVal.value) +
"</option>";
});
this.ui.enumValueSelector.empty();
this.ui.enumValueSelector.append(enumValues);
diff --git
a/dashboardv2/public/js/views/business_metadata/BusinessMetadataDetailLayoutView.js
b/dashboardv2/public/js/views/business_metadata/BusinessMetadataDetailLayoutView.js
index 02cc503..422808b 100644
---
a/dashboardv2/public/js/views/business_metadata/BusinessMetadataDetailLayoutView.js
+++
b/dashboardv2/public/js/views/business_metadata/BusinessMetadataDetailLayoutView.js
@@ -53,7 +53,7 @@ define(['require',
renderDetail: function() {
this.ui.title.html('<span>' + this.model.get('name') +
'</span>');
if (this.model.get('description')) {
- this.ui.description.text((this.model.get('description')));
+ this.ui.description.text(this.model.get('description'));
}
},
onDestroy: function() {
diff --git
a/dashboardv2/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js
b/dashboardv2/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js
index 329b5bb..ce1c892 100644
---
a/dashboardv2/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js
+++
b/dashboardv2/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js
@@ -296,7 +296,7 @@ define(['require',
editable: false,
formatter: _.extend({},
Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
- return model.get('description');
+ return _.escape(model.get('description'));
}
})
},
@@ -351,7 +351,7 @@ define(['require',
editable: false,
formatter: _.extend({},
Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
- return "<button type='button'
data-id='addAttribute' data-guid='" + model.get('guid') + "'' title=''
class='btn btn-action btn-sm ' style='margin-bottom: 10px;'
data-action='createAttr' data-original-title='Add Business Metadata
attribute'><i class='fa fa-plus'></i> Attributes</button>";
+ return "<button type='button'
data-id='addAttribute' data-guid='" + model.get('guid') + "' class='btn
btn-action btn-sm' style='margin-bottom: 10px;' data-action='createAttr'
data-original-title='Add Business Metadata attribute'><i class='fa
fa-plus'></i> Attributes</button>";
}
})
}
diff --git
a/dashboardv2/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
b/dashboardv2/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
index 761ef55..6261585 100644
---
a/dashboardv2/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
+++
b/dashboardv2/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
@@ -223,7 +223,7 @@ define(['require',
};
this.loaderStatus(true);
var name = this.ui.name.val(),
- description = _.escape(this.ui.description.val());
+ description = this.ui.description.val();
var attributeObj = this.collection.toJSON();
if (this.collection.length === 1 &&
this.collection.first().get("name") === "") {
attributeObj = [];
diff --git
a/dashboardv2/public/js/views/business_metadata/EnumCreateUpdateItemView.js
b/dashboardv2/public/js/views/business_metadata/EnumCreateUpdateItemView.js
index 08960a6..9cbebbe 100644
--- a/dashboardv2/public/js/views/business_metadata/EnumCreateUpdateItemView.js
+++ b/dashboardv2/public/js/views/business_metadata/EnumCreateUpdateItemView.js
@@ -104,8 +104,8 @@ define(["require", "backbone",
"hbs!tmpl/business_metadata/EnumCreateUpdateItemV
selectedEnum =
this.enumDefCollection.fullCollection.findWhere({ name: enumName }),
selectedEnumValues = selectedEnum ?
selectedEnum.get("elementDefs") : null;
_.each(selectedEnumValues, function(enumVal, index) {
- selectedValues.push(_.unescape(enumVal.value));
- enumValues += "<option>" + enumVal.value + "</option>";
+ selectedValues.push(enumVal.value);
+ enumValues += "<option>" + _.escape(enumVal.value) +
"</option>";
});
this.ui.enumCancleBtn.removeAttr("disabled");
@@ -197,7 +197,7 @@ define(["require", "backbone",
"hbs!tmpl/business_metadata/EnumCreateUpdateItemV
_.each(selectedEnumValues, function(inputEnumVal, index) {
elementValues.push({
ordinal: index + 1,
- value: _.escape(inputEnumVal)
+ value: inputEnumVal
});
});
diff --git a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
index 1bc0a42..e23f57a 100644
--- a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
@@ -202,10 +202,7 @@ define(['require',
} else {
this.ui.entityIcon.removeClass('disabled');
}
- if (collectionJSON.isIncomplete === true) {
- this.$(".isIncomplete").addClass("show");
- }
- this.ui.entityIcon.attr('title',
_.escape(collectionJSON.typeName)).html('<img src="' +
Utils.getEntityIconPath({ entityData: entityData }) + '"/><i class="fa
fa-hourglass-half"></i>').find("img").on('error', function() {
+ this.ui.entityIcon.attr('title',
_.escape(collectionJSON.typeName)).html('<img src="' +
Utils.getEntityIconPath({ entityData: entityData }) +
'"/>').find("img").on('error', function() {
this.src = Utils.getEntityIconPath({
entityData: entityData, errorUrl: this.src });
});
} else {
@@ -378,7 +375,7 @@ define(['require',
CommonViewFunction.deleteTag(_.extend({}, {
guid: that.id,
associatedGuid: that.id != entityGuid ? entityGuid : null,
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.name +
"?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from <b>" + this.name + "?</b></div>",
titleMessage: Messages.removeTag,
okText: "Remove",
showLoader: that.showLoader.bind(that),
@@ -405,7 +402,7 @@ define(['require',
relationshipGuid: termObj.relationshipGuid
},
collection: that.glossaryCollection,
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(termName) + "</b> assignment from" + " " + "<b>" + this.name +
"?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(termName) + "</b> assignment from <b>" + this.name + "?</b></div>",
titleMessage: Messages.glossary.removeTermfromEntity,
isEntityView: true,
buttonText: "Remove",
@@ -428,11 +425,11 @@ define(['require',
val.entityGuid === that.id ? tag['self'].push(val) :
tag['propagated'].push(val);
});
_.each(tag.self, function(val) {
- tagData += '<span class="btn btn-action btn-sm btn-icon
btn-blue" data-id="tagClick"><span title=' + val.typeName + ' >' + val.typeName
+ '</span><i class="fa fa-close" data-id="deleteTag" data-type="tag"
title="Remove Classification"></i></span>';
+ tagData += '<span class="btn btn-action btn-sm btn-icon
btn-blue" data-id="tagClick"><span>' + val.typeName + '</span><i class="fa
fa-close" data-id="deleteTag" data-type="tag" title="Remove
Classification"></i></span>';
});
_.each(tag.propagated, function(val) {
var crossButton = '<i class="fa fa-close"
data-id="deleteTag" data-entityguid="' + val.entityGuid + '" data-type="tag"
title="Remove Classification"></i>';
- propagatedTagListData += '<span class="btn btn-action
btn-sm btn-icon btn-blue" title=' + val.typeName + ' data-id="tagClick"><span>'
+ val.typeName + '</span>' + ((that.id !== val.entityGuid && val.entityStatus
=== "DELETED") ? crossButton : "") + '</span>';
+ propagatedTagListData += '<span class="btn btn-action
btn-sm btn-icon btn-blue" data-id="tagClick"><span>' + val.typeName + '</span>'
+ ((that.id !== val.entityGuid && val.entityStatus === "DELETED") ? crossButton
: "") + '</span>';
});
propagatedTagListData !== "" ? this.ui.propagatedTagDiv.show()
: this.ui.propagatedTagDiv.hide();
this.ui.tagList.find("span.btn").remove();
@@ -445,9 +442,7 @@ define(['require',
var that = this,
termData = "";
_.each(data, function(val) {
- // if (val.relationshipStatus == "ACTIVE") {
- termData += '<span class="btn btn-action btn-sm btn-icon
btn-blue" data-id="termClick"><span title=' + _.escape(val.displayText) + '>' +
_.escape(val.displayText) + '</span><i class="' + (val.relationshipStatus ==
"ACTIVE" ? 'fa fa-close' : "") + '" data-id="deleteTerm" data-guid="' +
val.guid + '" data-type="term" title="Remove Term"></i></span>';
- // }
+ termData += '<span class="btn btn-action btn-sm btn-icon
btn-blue" data-id="termClick"><span>' + _.escape(val.displayText) + '</span><i
class="' + (val.relationshipStatus == "ACTIVE" ? 'fa fa-close' : "") + '"
data-id="deleteTerm" data-guid="' + val.guid + '" data-type="term"
title="Remove Term"></i></span>';
});
this.ui.termList.find("span.btn").remove();
this.ui.termList.prepend(termData);
diff --git a/dashboardv2/public/js/views/entity/CreateEntityLayoutView.js
b/dashboardv2/public/js/views/entity/CreateEntityLayoutView.js
index 2a70b36..dec160f 100644
--- a/dashboardv2/public/js/views/entity/CreateEntityLayoutView.js
+++ b/dashboardv2/public/js/views/entity/CreateEntityLayoutView.js
@@ -513,7 +513,7 @@ define(['require',
},
getSelect: function(object) {
var value = object.value,
- entityValue = object.entityValue,
+ entityValue = _.escape(object.entityValue),
isAttribute = object.isAttribute,
isRelation = object.isRelation;
if (value.typeName === "boolean") {
@@ -543,7 +543,7 @@ define(['require',
},
getTextArea: function(object) {
var value = object.value,
- setValue = object.entityValue,
+ setValue = _.escape(object.entityValue),
isAttribute = object.isAttribute,
isRelation = object.isRelation,
structType = object.structType;
@@ -567,7 +567,7 @@ define(['require',
},
getInput: function(object) {
var value = object.value,
- entityValue = object.entityValue,
+ entityValue = _.escape(object.entityValue),
isAttribute = object.isAttribute,
isRelation = object.isRelation;
return '<input class="form-control entityInputBox ' +
(value.isOptional === true ? "false" : "true") + '"' +
diff --git
a/dashboardv2/public/js/views/entity/EntityBusinessMetaDataItemView.js
b/dashboardv2/public/js/views/entity/EntityBusinessMetaDataItemView.js
index 0220173..45b0890 100644
--- a/dashboardv2/public/js/views/entity/EntityBusinessMetaDataItemView.js
+++ b/dashboardv2/public/js/views/entity/EntityBusinessMetaDataItemView.js
@@ -153,7 +153,8 @@ define(['require',
val = options.val.value,
isMultiValued = typeName && typeName.indexOf("array<") ===
0,
businessMetadata = options.businessMetadata,
- allowOnlyNum = false;
+ allowOnlyNum = false,
+ isEnum = false;
var elType = isMultiValued ? "select" : "input";
if (!isMultiValued && !_.isEmpty(val)) {
val = _.escape(val);
@@ -175,7 +176,7 @@ define(['require',
}
}
if (typeName.indexOf("string") > -1) {
- returnEL = '<' + elType + ' type="text" data-key="' + key
+ '" data-businessMetadata="' + businessMetadata + '" data-typename="' +
typeName + '" data-multi="' + isMultiValued + '" data-tags="true"
placeholder="Enter String" class="form-control" ' + (!_.isUndefinedNull(val) ?
'value="' + val + '"' : "") + '></' + elType + '>';
+ returnEL = '<' + elType + ' type="text" data-key="' + key
+ '" data-businessMetadata="' + businessMetadata + '" data-typename="' +
typeName + '" data-multi="' + isMultiValued + '" data-tags="true"
placeholder="Enter String" class="form-control" ' + (isMultiValued === false &&
!_.isUndefinedNull(val) ? 'value="' + val + '"' : "") + '></' + elType + '>';
} else if (typeName.indexOf("boolean") > -1) {
returnEL = '<select data-key="' + key + '"
data-businessMetadata="' + businessMetadata + '" data-typename="' + typeName +
'" data-multi="' + isMultiValued + '" class="form-control">' + (isMultiValued ?
"" : '<option value="">--Select Value--</option>') + '<option value="true" ' +
(!_.isUndefinedNull(val) && val == "true" ? "selected" : "") +
'>true</option><option value="false" ' + (!_.isUndefinedNull(val) && val ==
"false" ? "selected" : "") + '>false</option></select>';
} else if (typeName.indexOf("date") > -1) {
@@ -198,6 +199,7 @@ define(['require',
allowOnlyNum = true;
returnEL = '<' + elType + ' data-key="' + key + '"
data-businessMetadata="' + businessMetadata + '" data-typename="' + typeName +
'" type="number" data-multi="' + isMultiValued + '" data-tags="true"
placeholder="Enter Number" class="form-control" ' + (!_.isUndefinedNull(val) ?
'value="' + val + '"' : "") + '></' + elType + '>';
} else if (typeName) {
+ isEnum = true;
var modTypeName = typeName;
if (isMultiValued) {
var multipleType = typeName.match("array<(.*)>");
@@ -209,30 +211,31 @@ define(['require',
if (foundEnumType) {
var enumOptions = "";
_.forEach(foundEnumType.get("elementDefs"),
function(obj) {
- enumOptions += '<option value="' + obj.value +
'">' + obj.value + '</option>'
+ enumOptions += '<option value="' +
_.escape(obj.value) + '">' + _.escape(obj.value) + '</option>'
});
- returnEL = '<select data-key="' + key + '"
data-businessMetadata="' + businessMetadata + '" data-typename="' + typeName +
'" data-multi="' + isMultiValued + '" >' + enumOptions + '</select>';
+ returnEL = '<select data-key="' + key + '"
data-businessMetadata="' + businessMetadata + '" data-typename="' + typeName +
'" data-multi="' + isMultiValued + '" data-enum="true">' + enumOptions +
'</select>';
}
- setTimeout(function() {
- if (!isMultiValued) {
- var selectEl =
that.$el.find('.custom-col-1[data-id="value"] select[data-key="' + key + '"]');
- selectEl.val((val || ""));
- selectEl.select2();
- }
- }, 0);
}
- if (isMultiValued) {
+ if (isEnum || elType === "select") {
setTimeout(function() {
- var selectEl =
that.$el.find('.custom-col-1[data-id="value"] select[data-key="' + key +
'"][data-multi="true"]');
- var data = val && val.length && (_.isArray(val) ? val
: val.split(",")) || [];
+ var selectEl =
that.$el.find('.custom-col-1[data-id="value"] select[data-key="' + key + '"]');
+ var data = [];
+ if (selectEl.data("multi")) {
+ data = val && val.length && (_.isArray(val) ? val
: val.split(",")) || [];
+ } else {
+ data = _.unescape(val);
+ }
if (allowOnlyNum) {
selectEl.parent().addClass("select2_only_number");
}
- selectEl.select2({
+ var opt = {
tags: selectEl.data("tags") ? true : false,
- multiple: true,
- data: data
- });
+ multiple: selectEl.data("multi")
+ }
+ if (!selectEl.data("enum")) {
+ opt.data = data;
+ }
+ selectEl.select2(opt);
selectEl.val(data).trigger("change");
}, 0);
}
diff --git a/dashboardv2/public/js/views/entity/EntityBusinessMetaDataView.js
b/dashboardv2/public/js/views/entity/EntityBusinessMetaDataView.js
index 5dab509..fe13f01 100644
--- a/dashboardv2/public/js/views/entity/EntityBusinessMetaDataView.js
+++ b/dashboardv2/public/js/views/entity/EntityBusinessMetaDataView.js
@@ -25,9 +25,9 @@ define([
"utils/Utils",
"utils/Messages",
"utils/CommonViewFunction",
- 'utils/Globals',
- 'moment'
-], function(require, Backbone, EntityBusinessMetaDataView_tmpl,
EntityBusinessMetaDataItemView, VEntity, Utils, Messages, CommonViewFunction,
Globals, moment) {
+ "moment",
+ "utils/Globals"
+], function(require, Backbone, EntityBusinessMetaDataView_tmpl,
EntityBusinessMetaDataItemView, VEntity, Utils, Messages, CommonViewFunction,
moment, Globals) {
"use strict";
return Backbone.Marionette.CompositeView.extend({
@@ -237,7 +237,7 @@ define([
}
}
- attrLi += "<tr><td>" + _.escape(key) + " (" +
_.escape(val.typeName) + ")</td><td>" + _.escape(newVal) + "</td></tr>";
+ attrLi += "<tr><td
class='business-metadata-detail-attr-key'>" + _.escape(key) + " (" +
_.escape(val.typeName) + ")</td><td>" + _.escape(newVal) + "</td></tr>";
}
});
li += that.associateAttributePanel(obj, attrLi);
@@ -250,7 +250,7 @@ define([
},
associateAttributePanel: function(obj, tableBody) {
return '<div class="panel panel-default custom-panel
expand_collapse_panel-icon no-border business-metadata-detail-attr">' +
- '<div class="panel-heading" data-toggle="collapse" href="#' +
_.escape(obj.get("__internal_UI_businessMetadataName")) + '"
aria-expanded="true" style="width: 70%;">' +
+ '<div class="panel-heading" data-toggle="collapse" href="#' +
_.escape(obj.get("__internal_UI_businessMetadataName")) + '"
aria-expanded="true" style="width: 90%;">' +
'<h4 class="panel-title"> <a>' +
_.escape(obj.get("__internal_UI_businessMetadataName")) + '</a></h4>' +
'<div class="btn-group pull-left"> <button type="button"
title="Collapse"><i class="ec-icon fa"></i></button></div>' +
'</div>' +
diff --git a/dashboardv2/public/js/views/entity/EntityLabelDefineView.js
b/dashboardv2/public/js/views/entity/EntityLabelDefineView.js
index 23bcc9f..69c83df 100644
--- a/dashboardv2/public/js/views/entity/EntityLabelDefineView.js
+++ b/dashboardv2/public/js/views/entity/EntityLabelDefineView.js
@@ -72,7 +72,7 @@ define(['require',
populateLabelOptions: function() {
var that = this,
str = this.labels.map(function(label) {
- return "<option selected > " + label + " </option>";
+ return "<option selected > " + _.escape(label) + "
</option>";
});
this.ui.addLabelOptions.html(str);
var getLabelData = function(data, selectedData) {
@@ -104,7 +104,7 @@ define(['require',
delay: 250,
data: function(params) {
return {
- prefixString: _.escape(params.term), // search term
+ prefixString: params.term, // search term
fieldName: '__labels'
};
},
@@ -131,7 +131,7 @@ define(['require',
}
},
onChangeLabelChange: function() {
- this.labels = this.ui.addLabelOptions.val().map(function(v) {
return _.escape(v) });
+ this.labels = this.ui.addLabelOptions.val();
},
handleBtnClick: function() {
this.swapItem = !this.swapItem;
diff --git a/dashboardv2/public/js/views/entity/EntityUserDefineItemView.js
b/dashboardv2/public/js/views/entity/EntityUserDefineItemView.js
index bcc0845..3a6bd63 100644
--- a/dashboardv2/public/js/views/entity/EntityUserDefineItemView.js
+++ b/dashboardv2/public/js/views/entity/EntityUserDefineItemView.js
@@ -99,7 +99,7 @@ define(['require',
var el = e.currentTarget;
this.handleCharSupport(el);
if (!el.value.trim().includes(':')) {
- this.items[el.dataset.index].value = _.escape(el.value.trim());
+ this.items[el.dataset.index].value = el.value.trim();
}
},
handleCharSupport: function(el) {
diff --git a/dashboardv2/public/js/views/glossary/GlossaryDetailLayoutView.js
b/dashboardv2/public/js/views/glossary/GlossaryDetailLayoutView.js
index a99dfaa..63c58e0 100644
--- a/dashboardv2/public/js/views/glossary/GlossaryDetailLayoutView.js
+++ b/dashboardv2/public/js/views/glossary/GlossaryDetailLayoutView.js
@@ -281,7 +281,7 @@ define(['require',
categories = "";
_.each(data, function(val) {
var name = _.escape(val.displayText);
- categories += '<span data-guid="' + val.categoryGuid + '""
class="btn btn-action btn-sm btn-icon btn-blue" data-id="categoryClick"><span
title=' + name + '>' + name + '</span><i class="fa fa-close"
data-id="removeCategory" data-type="category" title="Remove
Category"></i></span>';
+ categories += '<span data-guid="' + val.categoryGuid + '"
class="btn btn-action btn-sm btn-icon btn-blue" data-id="categoryClick"><span>'
+ name + '</span><i class="fa fa-close" data-id="removeCategory"
data-type="category" title="Remove Category"></i></span>';
});
this.ui.categoryList.find("span.btn").remove();
this.ui.categoryList.prepend(categories);
@@ -291,7 +291,7 @@ define(['require',
terms = "";
_.each(data, function(val) {
var name = _.escape(val.displayText);
- terms += '<span data-guid="' + val.termGuid + '""
class="btn btn-action btn-sm btn-icon btn-blue" data-id="termClick"><span
title=' + name + '>' + name + '</span><i class="fa fa-close"
data-id="removeTerm" data-type="term" title="Remove Term"></i></span>';
+ terms += '<span data-guid="' + val.termGuid + '"
class="btn btn-action btn-sm btn-icon btn-blue" data-id="termClick"><span>' +
name + '</span><i class="fa fa-close" data-id="removeTerm" data-type="term"
title="Remove Term"></i></span>';
});
this.ui.termList.find("span.btn").remove();
this.ui.termList.prepend(terms);
@@ -301,7 +301,7 @@ define(['require',
var that = this,
tagData = "";
_.each(tagObject, function(val) {
- tagData += '<span class="btn btn-action btn-sm btn-icon
btn-blue" data-id="tagClickTerm"><span title=' + val.typeName + '>' +
val.typeName + '</span><i class="fa fa-close" data-id="removeTagTerm"
data-type="tag" title="Remove Classification"></i></span>';
+ tagData += '<span class="btn btn-action btn-sm btn-icon
btn-blue" data-id="tagClickTerm"><span>' + val.typeName + '</span><i class="fa
fa-close" data-id="removeTagTerm" data-type="tag" title="Remove
Classification"></i></span>';
});
this.ui.tagList.find("span.btn").remove();
this.ui.tagList.prepend(tagData);
@@ -389,7 +389,7 @@ define(['require',
tagName = $(e.currentTarget).text(),
termName = this.data.name;
CommonViewFunction.deleteTag(_.extend({}, {
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from" + " " + "<b>" + _.escape(termName)
+ "?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from <b>" + _.escape(termName) +
"?</b></div>",
titleMessage: Messages.removeTag,
okText: "Remove",
showLoader: that.showLoader.bind(that),
@@ -410,7 +410,7 @@ define(['require',
selectedGuid: guid,
model: that.data,
collection: that.glossaryCollection,
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(name) + "</b> assignment from" + " " + "<b>" +
_.escape(that.data.name) + "?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(name) + "</b> assignment from <b>" + _.escape(that.data.name) +
"?</b></div>",
titleMessage: Messages.glossary[that.isTermView ?
"removeCategoryfromTerm" : "removeTermfromCategory"],
isCategoryView: that.isCategoryView,
isTermView: that.isTermView,
@@ -433,7 +433,7 @@ define(['require',
require(['views/tag/TagDetailTableLayoutView'],
function(TagDetailTableLayoutView) {
if (that.RTagTableLayoutView) {
that.RTagTableLayoutView.show(new
TagDetailTableLayoutView(_.extend({}, options, {
- "entityName": that.ui.title.text(),
+ "entityName": _.escape(that.ui.title.text()),
"fetchCollection": that.getData.bind(that),
"entity": that.data
})));
diff --git a/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js
b/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js
index 799acf6..ed01560 100644
--- a/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js
+++ b/dashboardv2/public/js/views/glossary/GlossaryLayoutView.js
@@ -85,7 +85,7 @@ define(['require',
};
events["click " + this.ui.importGlossary] =
'onClickImportGlossary';
events["keyup " + this.ui.searchTerm] = function() {
- this.ui.termTree.jstree("search",
this.ui.searchTerm.val());
+ this.ui.termTree.jstree("search",
_.escape(this.ui.searchTerm.val()));
};
events["keyup " + this.ui.searchCategory] = function() {
this.ui.categoryTree.jstree("search",
this.ui.searchCategory.val());
diff --git
a/dashboardv2/public/js/views/glossary/TermRelationAttributeLayoutView.js
b/dashboardv2/public/js/views/glossary/TermRelationAttributeLayoutView.js
index bf9757b..ded1ab9 100644
--- a/dashboardv2/public/js/views/glossary/TermRelationAttributeLayoutView.js
+++ b/dashboardv2/public/js/views/glossary/TermRelationAttributeLayoutView.js
@@ -231,7 +231,7 @@ define(['require',
getTerms: function(key) {
var terms = _.map(that.data[key], function(obj) {
var name = _.escape(obj.displayText);
- return '<span data-guid="' + obj.termGuid + '"
class="btn btn-action btn-sm btn-icon btn-blue" title=' + _.escape(name) + '
data-id="termClick"><span>' + name + '</span><i class="fa fa-close"
data-id="deleteAttribute" data-attributename="' + key + '" data-termguid="' +
obj.termGuid + '" data-type="term" title="Remove Term"></i></span>';
+ return '<span data-guid="' + obj.termGuid + '"
class="btn btn-action btn-sm btn-icon btn-blue" data-id="termClick"><span>' +
name + '</span><i class="fa fa-close" data-id="deleteAttribute"
data-attributename="' + key + '" data-termguid="' + obj.termGuid + '"
data-type="term" title="Remove Term"></i></span>';
}).join(""),
attributeButtons = "";
if (terms.length) {
diff --git a/dashboardv2/public/js/views/graph/LineageUtils.js
b/dashboardv2/public/js/views/graph/LineageUtils.js
index ed66782..bd85d77 100644
--- a/dashboardv2/public/js/views/graph/LineageUtils.js
+++ b/dashboardv2/public/js/views/graph/LineageUtils.js
@@ -326,18 +326,6 @@ define(['require', 'utils/Utils'], function(require,
Utils) {
shapeSvg.attr("stroke", "#fb4200")
}
- if (node.isIncomplete === true) {
- parent.attr("class", "node isIncomplete show");
- parent.insert("foreignObject")
- .attr("x", "-25")
- .attr("y", "-25")
- .attr("width", "50")
- .attr("height", "50")
- .append("xhtml:div")
- .insert("i")
- .attr("class", "fa fa-hourglass-half");
- }
-
if ($defs.select('pattern[id="img_' + imgName + '"]').empty()) {
var $pattern = $defs.append("pattern")
.attr("x", "0%")
diff --git a/dashboardv2/public/js/views/graph/PropagationPropertyModal.js
b/dashboardv2/public/js/views/graph/PropagationPropertyModal.js
index a90115c..5839959 100644
--- a/dashboardv2/public/js/views/graph/PropagationPropertyModal.js
+++ b/dashboardv2/public/js/views/graph/PropagationPropertyModal.js
@@ -151,7 +151,7 @@ define(['require',
fromEntity = this.lineageData.guidEntityMap[obj.fromEntityId],
toEntity = this.lineageData.guidEntityMap[obj.toEntityId];
if (fromEntity && toEntity) {
- this.ui.edgeDetailName.html(fromEntity.displayText + " <span
class='navigation-font'><i class='fa fa-long-arrow-right fa-color'></i></span>
" + toEntity.displayText);
+ this.ui.edgeDetailName.html(_.escape(fromEntity.displayText) +
" <span class='navigation-font'><i class='fa fa-long-arrow-right
fa-color'></i></span> " + _.escape(toEntity.displayText));
}
if (obj && obj.relationshipId) {
this.showLoader();
diff --git a/dashboardv2/public/js/views/graph/RelationshipLayoutView.js
b/dashboardv2/public/js/views/graph/RelationshipLayoutView.js
index 3379a66..5b2d48f 100644
--- a/dashboardv2/public/js/views/graph/RelationshipLayoutView.js
+++ b/dashboardv2/public/js/views/graph/RelationshipLayoutView.js
@@ -142,12 +142,12 @@ define(['require',
updateRelationshipDetails: function(options) {
var data = options.obj.value,
typeName = data.typeName || options.obj.name,
- searchString = options.searchString,
+ searchString = _.escape(options.searchString),
listString = "",
getEntityTypelist = function(options) {
var activeEntityColor = "#4a90e2",
deletedEntityColor = "#BB5838",
- entityTypeHtml = '',
+ entityTypeHtml = '<pre>',
getdefault = function(obj) {
var options = obj.options,
status =
(Enums.entityStateReadOnly[options.entityStatus || options.status] ? "
deleted-relation" : ''),
@@ -155,7 +155,6 @@ define(['require',
entityColor = obj.color,
name = obj.name,
typeName = options.typeName;
-
if (typeName === "AtlasGlossaryTerm") {
return '<li class=' + status + '>' +
'<a style="color:' + entityColor + '"
href="#!/glossary/' + guid + '?guid=' + guid +
'&gType=term&viewType=term&fromView=entity">' + name + ' (' + typeName +
')</a>' +
@@ -194,13 +193,13 @@ define(['require',
entityTypeHtml = getdefault({
"color": activeEntityColor,
"options": options,
- "name": _.escape(name)
+ "name": name
});
} else if (options.relationshipStatus ==
"DELETED") {
entityTypeHtml = getWithButton({
"color": activeEntityColor,
"options": options,
- "name": _.escape(name),
+ "name": name,
"relationship": true
})
}
@@ -208,18 +207,17 @@ define(['require',
entityTypeHtml = getWithButton({
"color": deletedEntityColor,
"options": options,
- "name": _.escape(name),
+ "name": name,
"entity": true
})
} else {
-
entityTypeHtml = getdefault({
"color": activeEntityColor,
"options": options,
- "name": _.escape(name)
+ "name": name
});
}
- return entityTypeHtml;
+ return entityTypeHtml + '</pre>';
};
this.ui.searchNode.hide();
this.$("[data-id='typeName']").text(typeName);
diff --git a/dashboardv2/public/js/views/schema/SchemaLayoutView.js
b/dashboardv2/public/js/views/schema/SchemaLayoutView.js
index 37e1e96..ab776e9 100644
--- a/dashboardv2/public/js/views/schema/SchemaLayoutView.js
+++ b/dashboardv2/public/js/views/schema/SchemaLayoutView.js
@@ -207,7 +207,7 @@ define(['require',
className: "searchTableName",
formatter: _.extend({},
Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
- var value =
model.get('attributes')[key];
+ var value =
_.escape(model.get('attributes')[key]);
if (key === "name" &&
model.get('guid')) {
var nameHtml = '<a
href="#!/detailPage/' + model.get('guid') + '">' + value + '</a>';
if (model.get('status') &&
Enums.entityStateReadOnly[model.get('status')]) {
@@ -288,7 +288,7 @@ define(['require',
CommonViewFunction.deleteTag({
tagName: tagName,
guid: guid,
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + "
?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from <b>" + _.escape(assetName) + "
?</b></div>",
titleMessage: Messages.removeTag,
okText: "Remove",
showLoader: that.showLoader.bind(that),
diff --git a/dashboardv2/public/js/views/search/SearchLayoutView.js
b/dashboardv2/public/js/views/search/SearchLayoutView.js
index e740d8d..c9eae6b 100644
--- a/dashboardv2/public/js/views/search/SearchLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchLayoutView.js
@@ -621,7 +621,7 @@ define(['require',
_.each(dataList, function(obj) {
if (obj) {
if (obj.guid) {
- obj['id'] = Utils.getName(obj,
'qualifiedName');
+ obj['id'] = obj.attributes['qualifiedName'];
}
foundOptions.push(obj);
}
@@ -705,7 +705,7 @@ define(['require',
}
if (this.value.term) {
- this.ui.termLov.append('<option value="' +
this.value.term + '" selected="selected">' + this.value.term + '</option>');
+ this.ui.termLov.append('<option value="' +
_.escape(this.value.term) + '" selected="selected">' +
_.escape(this.value.term) + '</option>');
}
if (this.ui.termLov.data('select2')) {
if (this.ui.termLov.val() !== this.value.term) {
diff --git a/dashboardv2/public/js/views/search/SearchResultLayoutView.js
b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
index 88b4474..5000701 100644
--- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
@@ -710,12 +710,8 @@ define(['require',
}
});
}
- var img = "",
- isIncompleteClass = "isIncomplete
search-result-page";
- if (obj.isIncomplete === true) {
- isIncompleteClass += " show";
- }
- img = "<div class='" + isIncompleteClass + "'><img
data-imgGuid='" + obj.guid + "' class='searchTableLogoLoader'><i class='fa
fa-hourglass-half'></i></div>";
+ var img = "";
+ img = "<div><img data-imgGuid='" + obj.guid + "'
class='searchTableLogoLoader'></div>";
getImageData({ imagePath:
Utils.getEntityIconPath({ entityData: obj }) });
return (img + nameHtml);
}
@@ -879,7 +875,7 @@ define(['require',
if
(values[values.length - 1] === "") { values.pop(); }
if (values[0] === "")
{ values.shift(); }
_.each(values,
function(names) {
-
valueOfArray.push('<span class="json-string"><a class="btn btn-action btn-sm
btn-blue btn-icon" ><span title="" data-original-title="' + names + '" >' +
names + '</span></a></span>');
+
valueOfArray.push('<span class="json-string"><a class="btn btn-action btn-sm
btn-blue btn-icon" ><span>' + _.escape(names) + '</span></a></span>');
});
return
valueOfArray.join(' ');
}
@@ -889,7 +885,7 @@ define(['require',
valueOfArray = [];
if (customAttributes) {
_.each(Object.keys(customAttributes), function(value, index) {
-
valueOfArray.push('<span class="json-string"><a class="btn btn-action btn-sm
btn-blue btn-icon" ><span title="" data-original-title="' + value + ' : ' +
Object.values(customAttributes)[index] + '" ><span>' + value + '</span> :
<span>' + Object.values(customAttributes)[index] + '</span></span></a></span>');
+
valueOfArray.push('<span class="json-string"><a class="btn btn-action btn-sm
btn-blue btn-icon" ><span><span>' + _.escape(value) + '</span> : <span>' +
_.escape(Object.values(customAttributes)[index]) + '</span></span></a></span>');
});
return
valueOfArray.join(' ');
}
@@ -949,7 +945,7 @@ define(['require',
var modelObj = model.toJSON();
if (key == "name") {
var nameHtml = "",
- name = modelObj[key];
+ name = _.escape(modelObj[key]);
if (modelObj.guid) {
nameHtml = '<a title="' + name +
'" href="#!/detailPage/' + modelObj.guid + (that.fromView ? "?from=" +
that.fromView : "") + '">' + name + '</a>';
} else {
@@ -1139,7 +1135,7 @@ define(['require',
tagName: tagName,
guid: guid,
associatedGuid: guid != entityGuid ? entityGuid : null,
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + "
?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from <b>" + _.escape(assetName) + "
?</b></div>",
titleMessage: Messages.removeTag,
okText: "Remove",
showLoader: that.showLoader.bind(that),
@@ -1166,7 +1162,7 @@ define(['require',
relationshipGuid: termObj.relationGuid
},
collection: that.glossaryCollection,
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(termName) + "</b> assignment from" + " " + "<b>" + assetname +
"?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(termName) + "</b> assignment from <b>" + _.escape(assetname) +
"?</b></div>",
titleMessage: Messages.glossary.removeTermfromEntity,
isEntityView: true,
buttonText: "Remove",
diff --git a/dashboardv2/public/js/views/site/Header.js
b/dashboardv2/public/js/views/site/Header.js
index ee8a01c..2d6b55d 100644
--- a/dashboardv2/public/js/views/site/Header.js
+++ b/dashboardv2/public/js/views/site/Header.js
@@ -276,10 +276,9 @@ define(['require',
}
item.serviceType =
Globals.serviceTypeMap[item.typeName];
options.entityData = item;
- var imgEl = $('<img src="' +
Utils.getEntityIconPath(options) + '">').on("error", function(error, s) {
+ var img = $('<img src="' +
Utils.getEntityIconPath(options) + '">').on("error", function(error, s) {
this.src =
Utils.getEntityIconPath(_.extend(options, { errorUrl: this.src }));
});
- var img = $('<div
class="globalsearchImgItem isIncomplete ' + (item.isIncomplete ? "show" : "") +
'"><i class="fa fa-hourglass-half"></i><div>').prepend(imgEl);
var span = $("<span>" +
(getHighlightedTerm(item.itemText)) + "</span>")
.prepend(img);
li = $("<li class='with-icon'>")
diff --git a/dashboardv2/public/js/views/tag/AddTagModalView.js
b/dashboardv2/public/js/views/tag/AddTagModalView.js
index df280fb..2e3df3f 100644
--- a/dashboardv2/public/js/views/tag/AddTagModalView.js
+++ b/dashboardv2/public/js/views/tag/AddTagModalView.js
@@ -355,7 +355,7 @@ define(['require',
var str = '<option value=""' + (!that.tagModel ?
'selected' : '') + '>-- Select ' + typeName + " --</option>";
var enumValue = typeNameValue.get('elementDefs');
_.each(enumValue, function(key, value) {
- str += '<option ' + ((that.tagModel && key.value
=== that.tagModel.attributes[name]) ? 'selected' : '') + '>' + key.value +
'</option>';
+ str += '<option ' + ((that.tagModel && key.value
=== that.tagModel.attributes[name]) ? 'selected' : '') + '>' +
_.escape(key.value) + '</option>';
})
that.ui.tagAttribute.append('<div
class="form-group"><label>' + name + '</label>' + ' (' + typeName + ')' +
'<select class="form-control attributeInputVal
attrName" data-key="' + name + '">' + str + '</select></div>');
@@ -393,7 +393,7 @@ define(['require',
}
},
getElement: function(labelName, typeName) {
- var value = this.tagModel && this.tagModel.attributes ?
(this.tagModel.attributes[labelName] || "") : "",
+ var value = this.tagModel && this.tagModel.attributes ?
(this.tagModel.attributes[_.unescape(labelName)] || "") : "",
isTypeNumber = typeName === "int" || typeName === "byte" ||
typeName === "short" || typeName === "double" || typeName === "float",
inputClassName = "form-control attributeInputVal attrName";
if (isTypeNumber) {
@@ -405,7 +405,7 @@ define(['require',
'<option value="true">true</option>' +
'<option value="false">false</option></select>';
} else {
- return '<input type="text" value="' + value + '" class="' +
inputClassName + '" data-key="' + labelName + '" data-type="' + typeName +
'"/>';
+ return '<input type="text" value="' + _.escape(value) + '"
class="' + inputClassName + '" data-key="' + labelName + '" data-type="' +
typeName + '"/>';
}
},
diff --git a/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
b/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
index ac61f3d..00861f5 100644
--- a/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
@@ -228,7 +228,7 @@ define(['require',
return activeTagObj.name.toLowerCase() ===
obj.name.toLowerCase();
});
if (duplicateCheck) {
- duplicateAttributeList.push(obj.name);
+
duplicateAttributeList.push(_.escape(obj.name));
} else {
saveObj.attributeDefs.push(obj);
}
diff --git a/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
b/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
index c018274..7422363 100644
--- a/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
@@ -207,7 +207,7 @@ define(['require',
tagName: tagName,
guid: that.guid,
associatedGuid: that.guid != entityGuid ? entityGuid :
null,
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.entityName +
"?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from <b>" + this.entityName +
"?</b></div>",
titleMessage: Messages.removeTag,
okText: "Remove",
showLoader: function() {
diff --git a/dashboardv2/public/js/views/tag/TagLayoutView.js
b/dashboardv2/public/js/views/tag/TagLayoutView.js
index 5e2b523..a9af2e1 100644
--- a/dashboardv2/public/js/views/tag/TagLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagLayoutView.js
@@ -447,7 +447,7 @@ define(['require',
return activeTagObj.name.toLowerCase() ===
obj.name.toLowerCase();
});
if (duplicateCheck) {
- duplicateAttributeList.push(obj.name);
+ duplicateAttributeList.push(_.escape(obj.name));
}
});
var notifyObj = {
diff --git a/dashboardv3/public/css/scss/business-metadata.scss
b/dashboardv3/public/css/scss/business-metadata.scss
index 543f3d6..989dd79 100644
--- a/dashboardv3/public/css/scss/business-metadata.scss
+++ b/dashboardv3/public/css/scss/business-metadata.scss
@@ -21,6 +21,7 @@
>li:first-child {
font-weight: 600;
+ word-break: break-all;
}
.business-metadata-tree-child {
@@ -38,6 +39,26 @@
margin-top: 10px;
font-weight: 100;
}
+
+ .custom-table {
+ &:not(.bm-create) {
+ .custom-tr {
+
+ .custom-col-1 {
+ width: calc(50% - 55px);
+
+ .select2-selection--multiple .select2-selection__rendered {
+ overflow: scroll;
+ }
+ }
+
+ .custom-col-2 {
+ width: 45px;
+ }
+ }
+ }
+ }
+
}
.business-metadata-options.dropdown {
@@ -165,6 +186,8 @@
.panel-title {
font-size: 14px;
+ word-break: break-all;
+ width: inherit;
a:hover {
color: #686868 !important;
@@ -176,4 +199,10 @@
.btn-group>button {
color: #686868 !important;
}
+
+ .business-metadata-detail-attr-key {
+ width: 30%;
+ word-break: break-word;
+
+ }
}
\ No newline at end of file
diff --git a/dashboardv3/public/css/scss/common.scss
b/dashboardv3/public/css/scss/common.scss
index 69fcfc1..59f9bcc 100644
--- a/dashboardv3/public/css/scss/common.scss
+++ b/dashboardv3/public/css/scss/common.scss
@@ -219,10 +219,18 @@ pre {
.custom-table {
width: 100%;
+ display: flex;
+
+ tbody {
+ display: flex;
+ flex-flow: column;
+ width: 100%;
+ }
.custom-tr {
margin-left: 15px;
- margin-right: 15px;
+ display: flex;
+ width: calc(100% - 15px);
.custom-col-0,
.custom-col-1,
@@ -239,22 +247,25 @@ pre {
.custom-col-0 {
- text-align: center;
- vertical-align: middle;
line-height: 31px;
- width: 3%;
+ width: 9px;
+ padding: 0px 2px;
}
.custom-col-1 {
- width: 39%;
- margin-bottom: 10px;
+ width: calc(50% - 90px);
+ flex-grow: 2;
+
+ &:first-child {
+ width: 30% !important;
+ flex-grow: 1;
+ }
}
.custom-col-2 {
text-align: center;
- width: 17%;
- padding-left: 1%;
- margin-bottom: 10px;
+ width: 80px;
+ padding-left: 10px;
&>button {
padding: 7px 10px;
diff --git a/dashboardv3/public/css/scss/theme.scss
b/dashboardv3/public/css/scss/theme.scss
index dbb225b..abbde7a 100644
--- a/dashboardv3/public/css/scss/theme.scss
+++ b/dashboardv3/public/css/scss/theme.scss
@@ -684,90 +684,6 @@ hr[size="10"] {
border-bottom-color: #000;
}
-td.searchTableName:hover {
- .isIncomplete {
- &.show.search-result-page {
- i {
- left: 7px;
- }
- }
- }
-}
-
-.globalsearchImgItem.isIncomplete {
- display: inline-block !important;
- position: relative;
-
- i.fa {
- left: 10px;
- top: 7px;
- font-size: 12px;
- }
-}
-
-.isIncomplete {
- &.show {
- img {
- opacity: 0.2;
- //animation: blink 2.5s infinite;
- }
-
- i.fa {
- display: block;
- }
-
- .entity-icon-box {
- background: none;
-
- i.fa {
- top: 27px;
- font-size: 18px;
- }
- }
-
- foreignObject {
- display: block;
-
- i.fa {
- font-size: 15px;
- top: 17px;
- left: 18.5px;
- }
- }
-
- image,
- circle {
- opacity: 0.2;
- //animation: blink 2.5s infinite;
- }
-
- &.search-result-page {
- position: relative;
-
- i {
- left: 13px;
- font-size: 9px;
- top: 5px;
- }
- }
- }
-
- foreignObject {
- display: none;
- }
-
- i.fa {
- color: #898989;
- display: none;
- text-align: center;
- font-size: 16px;
- top: 0;
- position: absolute;
- z-index: 1;
- left: calc(50% - 8px);
- }
-}
-
.dropdown-menu.multi-level {
.dropdown-submenu {
position: relative;
diff --git
a/dashboardv3/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
b/dashboardv3/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
index 1182a49..17a8d10 100644
--- a/dashboardv3/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
+++ b/dashboardv3/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
@@ -22,7 +22,7 @@
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
<div class="entityDetail form-horizontal col-sm-12">
- <h1 class="title isIncomplete">
+ <h1 class="title">
<div data-id="entityIcon" class="entity-icon-box
position-relative"></div>
<span data-id="title"></span>
</h1> {{#if entityUpdate}}
diff --git
a/dashboardv3/public/js/templates/entity/EntityBusinessMetaDataItemView_tmpl.html
b/dashboardv3/public/js/templates/entity/EntityBusinessMetaDataItemView_tmpl.html
index 3338fd5..0b92cb1 100644
---
a/dashboardv3/public/js/templates/entity/EntityBusinessMetaDataItemView_tmpl.html
+++
b/dashboardv3/public/js/templates/entity/EntityBusinessMetaDataItemView_tmpl.html
@@ -15,7 +15,7 @@
* limitations under the License.
-->
{{#ifCond model "has" "isNew"}}
-<table class="custom-table" style="font-weight: 100;">
+<table class="custom-table bm-create" style="font-weight: 100;">
<tr class="custom-tr">
<td class="custom-col-1">
{{{callmyfunction getBusinessMetadataDroupdown
businessMetadataCollection}}}
diff --git a/dashboardv3/public/js/templates/graph/LineageLayoutView_tmpl.html
b/dashboardv3/public/js/templates/graph/LineageLayoutView_tmpl.html
index f14abba..8679c3b 100644
--- a/dashboardv3/public/js/templates/graph/LineageLayoutView_tmpl.html
+++ b/dashboardv3/public/js/templates/graph/LineageLayoutView_tmpl.html
@@ -139,7 +139,6 @@
</div>
<div class="legends pull-left" style="height: 25px; padding: 2px;">
<span style="margin-right: 8px; color:#fb4200;"><i class="fa
fa-circle-o fa-fw"></i>Current Entity</span>
- <span style="margin-right: 8px;"><i class="fa fa-hourglass-half
fa-fw"></i>In Progress</span>
<span style="margin-right: 8px; color:#df9b00;"><i class="fa
fa-long-arrow-right fa-fw"></i>Lineage</span>
<span style="margin-right: 8px; color:#fb4200;"><i class="fa
fa-long-arrow-right fa-fw"></i>Impact</span>
</div>
diff --git a/dashboardv3/public/js/utils/CommonViewFunction.js
b/dashboardv3/public/js/utils/CommonViewFunction.js
index bdf3bd0..dd3818b 100644
--- a/dashboardv3/public/js/utils/CommonViewFunction.js
+++ b/dashboardv3/public/js/utils/CommonViewFunction.js
@@ -221,9 +221,9 @@ define(['require', 'utils/Utils', 'modules/Modal',
'utils/Messages', 'utils/Enum
tempLink += '<div data-id="' + fetchId + '"><div
class="value-loader"></div></div>';
} else {
if (inputOutputField.typeName ==
"AtlasGlossaryTerm") {
- tempLink += '<a href="#!/glossary/' + id +
'?guid=' + id + '&gType=term&viewType=term">' + getValue(name) + '</a>'
+ tempLink += '<a href="#!/glossary/' + id +
'?guid=' + id + '&gType=term&viewType=term">' + name + '</a>'
} else {
- tempLink += '<a href="#!/detailPage/' + id +
'">' + getValue(name) + '</a>'
+ tempLink += '<a href="#!/detailPage/' + id +
'">' + name + '</a>'
}
}
}
@@ -254,7 +254,6 @@ define(['require', 'utils/Utils', 'modules/Modal',
'utils/Messages', 'utils/Enum
valueObjectKeysList = _.sortBy(valueObjectKeysList);
}
valueObjectKeysList.map(function(key) {
- key = _.escape(key);
if (key == "profileData") {
return;
}
@@ -276,8 +275,6 @@ define(['require', 'utils/Utils', 'modules/Modal',
'utils/Messages', 'utils/Enum
var val = "";
if (_.isObject(valueObject[key])) {
val = keyValue
- } else if (Utils.isUrl(keyValue)) {
- val = '<a target="_blank" class="blue-link" href="' +
_.escape(keyValue) + '">' + getValue(keyValue) + '</a>';
} else if (key === 'guid' || key === "__guid") {
if (options.fromAdminAudit) {
val = getValue(keyValue);
@@ -322,9 +319,9 @@ define(['require', 'utils/Utils', 'modules/Modal',
'utils/Messages', 'utils/Enum
var className = "btn btn-action btn-sm btn-blue btn-icon",
deleteIcon = "";
if (obj.guid === tag.entityGuid) {
- deleteIcon = '<i class="fa fa-times" data-id="delete"
data-assetname="' + entityName + '"data-name="' + tag.typeName + '"
data-type="tag" data-guid="' + obj.guid + '" ></i>';
+ deleteIcon = '<i class="fa fa-times" data-id="delete"
data-assetname="' + entityName + '" data-name="' + tag.typeName + '"
data-type="tag" data-guid="' + obj.guid + '" ></i>';
} else if (obj.guid !== tag.entityGuid && tag.entityStatus ===
"DELETED") {
- deleteIcon = '<i class="fa fa-times" data-id="delete"
data-assetname="' + entityName + '"data-name="' + tag.typeName + '"
data-type="tag" data-entityguid="' + tag.entityGuid + '" data-guid="' +
obj.guid + '" ></i>';
+ deleteIcon = '<i class="fa fa-times" data-id="delete"
data-assetname="' + entityName + '" data-name="' + tag.typeName + '"
data-type="tag" data-entityguid="' + tag.entityGuid + '" data-guid="' +
obj.guid + '" ></i>';
} else {
className += " propagte-classification";
}
@@ -358,9 +355,10 @@ define(['require', 'utils/Utils', 'modules/Modal',
'utils/Messages', 'utils/Enum
entityName = Utils.getName(obj);
if (terms) {
terms.map(function(term) {
+ var displayText = _.escape(term.displayText);
var className = "btn btn-action btn-sm btn-blue btn-icon",
- deleteIcon = '<i class="fa fa-times" data-id="delete"
data-assetname="' + entityName + '"data-name="' + term.displayText + '"
data-type="term" data-guid="' + obj.guid + '" data-termGuid="' + term.termGuid
+ '" ></i>',
- termString = '<a class="' + className + '"
data-id="termClick"><span title="' + _.escape(term.displayText) + '">' +
_.escape(term.displayText) + '</span>' + deleteIcon + '</a>';
+ deleteIcon = '<i class="fa fa-times" data-id="delete"
data-assetname="' + entityName + '" data-name="' + displayText + '"
data-type="term" data-guid="' + obj.guid + '" data-termGuid="' + term.termGuid
+ '" ></i>',
+ termString = '<a class="' + className + '"
data-id="termClick"><span title="' + displayText + '">' + displayText +
'</span>' + deleteIcon + '</a>';
if (count >= 1) {
popTerm += termString;
} else {
diff --git
a/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js
b/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js
index f22dd05..5190db0 100644
---
a/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js
+++
b/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js
@@ -233,8 +233,8 @@ define(['require',
selectedEnumValues = selectedEnum ?
selectedEnum.get('elementDefs') : null,
savedValues = [];
_.each(selectedEnumValues, function(enumVal, index) {
- selectedValues.push(_.unescape(enumVal.value));
- enumValues += "<option>" + enumVal.value + "</option>";
+ selectedValues.push(enumVal.value);
+ enumValues += "<option>" + _.escape(enumVal.value) +
"</option>";
});
this.ui.enumValueSelector.empty();
this.ui.enumValueSelector.append(enumValues);
diff --git
a/dashboardv3/public/js/views/business_metadata/BusinessMetadataDetailLayoutView.js
b/dashboardv3/public/js/views/business_metadata/BusinessMetadataDetailLayoutView.js
index 90d9d6d..ee5b84b 100644
---
a/dashboardv3/public/js/views/business_metadata/BusinessMetadataDetailLayoutView.js
+++
b/dashboardv3/public/js/views/business_metadata/BusinessMetadataDetailLayoutView.js
@@ -56,7 +56,7 @@ define(['require',
renderDetail: function() {
this.ui.title.html('<span>' + this.model.get('name') +
'</span>');
if (this.model.get('description')) {
- this.ui.description.text((this.model.get('description')));
+ this.ui.description.text(this.model.get('description'));
}
}
});
diff --git
a/dashboardv3/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js
b/dashboardv3/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js
index cef16bf..0bd8d67 100644
---
a/dashboardv3/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js
+++
b/dashboardv3/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js
@@ -296,7 +296,7 @@ define(['require',
editable: false,
formatter: _.extend({},
Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
- return model.get('description');
+ return _.escape(model.get('description'));
}
})
},
@@ -351,7 +351,7 @@ define(['require',
editable: false,
formatter: _.extend({},
Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
- return "<button type='button'
data-id='addAttribute' data-guid='" + model.get('guid') + "'' title=''
class='btn btn-action btn-xs ' style='margin-bottom: 10px;'
data-action='createAttr' data-original-title='Add Business Metadata
attribute'><i class='fa fa-plus'></i> Attributes</button>";
+ return "<button type='button'
data-id='addAttribute' data-guid='" + model.get('guid') + "' class='btn
btn-action btn-sm' style='margin-bottom: 10px;' data-action='createAttr'
data-original-title='Add Business Metadata attribute'><i class='fa
fa-plus'></i> Attributes</button>";
}
})
}
diff --git
a/dashboardv3/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
b/dashboardv3/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
index 761ef55..6261585 100644
---
a/dashboardv3/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
+++
b/dashboardv3/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
@@ -223,7 +223,7 @@ define(['require',
};
this.loaderStatus(true);
var name = this.ui.name.val(),
- description = _.escape(this.ui.description.val());
+ description = this.ui.description.val();
var attributeObj = this.collection.toJSON();
if (this.collection.length === 1 &&
this.collection.first().get("name") === "") {
attributeObj = [];
diff --git
a/dashboardv3/public/js/views/business_metadata/EnumCreateUpdateItemView.js
b/dashboardv3/public/js/views/business_metadata/EnumCreateUpdateItemView.js
index 08960a6..9cbebbe 100644
--- a/dashboardv3/public/js/views/business_metadata/EnumCreateUpdateItemView.js
+++ b/dashboardv3/public/js/views/business_metadata/EnumCreateUpdateItemView.js
@@ -104,8 +104,8 @@ define(["require", "backbone",
"hbs!tmpl/business_metadata/EnumCreateUpdateItemV
selectedEnum =
this.enumDefCollection.fullCollection.findWhere({ name: enumName }),
selectedEnumValues = selectedEnum ?
selectedEnum.get("elementDefs") : null;
_.each(selectedEnumValues, function(enumVal, index) {
- selectedValues.push(_.unescape(enumVal.value));
- enumValues += "<option>" + enumVal.value + "</option>";
+ selectedValues.push(enumVal.value);
+ enumValues += "<option>" + _.escape(enumVal.value) +
"</option>";
});
this.ui.enumCancleBtn.removeAttr("disabled");
@@ -197,7 +197,7 @@ define(["require", "backbone",
"hbs!tmpl/business_metadata/EnumCreateUpdateItemV
_.each(selectedEnumValues, function(inputEnumVal, index) {
elementValues.push({
ordinal: index + 1,
- value: _.escape(inputEnumVal)
+ value: inputEnumVal
});
});
diff --git a/dashboardv3/public/js/views/detail_page/DetailPageLayoutView.js
b/dashboardv3/public/js/views/detail_page/DetailPageLayoutView.js
index 35ee6bf..41cf400 100644
--- a/dashboardv3/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv3/public/js/views/detail_page/DetailPageLayoutView.js
@@ -206,10 +206,7 @@ define(['require',
} else {
this.ui.entityIcon.removeClass('disabled');
}
- if (collectionJSON.isIncomplete === true) {
- this.$(".isIncomplete").addClass("show");
- }
- this.ui.entityIcon.attr('title',
_.escape(collectionJSON.typeName)).html('<img src="' +
Utils.getEntityIconPath({ entityData: entityData }) + '"/><i class="fa
fa-hourglass-half"></i>').find("img").on('error', function() {
+ this.ui.entityIcon.attr('title',
_.escape(collectionJSON.typeName)).html('<img src="' +
Utils.getEntityIconPath({ entityData: entityData }) +
'"/>').find("img").on('error', function() {
this.src = Utils.getEntityIconPath({
entityData: entityData, errorUrl: this.src });
});
} else {
@@ -382,7 +379,7 @@ define(['require',
CommonViewFunction.deleteTag(_.extend({}, {
guid: that.id,
associatedGuid: that.id != entityGuid ? entityGuid : null,
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.name +
"?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from <b>" + this.name + "?</b></div>",
titleMessage: Messages.removeTag,
okText: "Remove",
showLoader: that.showLoader.bind(that),
@@ -409,7 +406,7 @@ define(['require',
relationshipGuid: termObj.relationshipGuid
},
collection: that.glossaryCollection,
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(termName) + "</b> assignment from" + " " + "<b>" + this.name +
"?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(termName) + "</b> assignment from <b>" + this.name + "?</b></div>",
titleMessage: Messages.glossary.removeTermfromEntity,
isEntityView: true,
buttonText: "Remove",
@@ -432,11 +429,11 @@ define(['require',
val.entityGuid === that.id ? tag['self'].push(val) :
tag['propagated'].push(val);
});
_.each(tag.self, function(val) {
- tagData += '<span class="btn btn-action btn-sm btn-icon
btn-blue" data-id="tagClick"><span title=' + val.typeName + ' >' + val.typeName
+ '</span><i class="fa fa-close" data-id="deleteTag" data-type="tag"
title="Remove Classification"></i></span>';
+ tagData += '<span class="btn btn-action btn-sm btn-icon
btn-blue" data-id="tagClick"><span>' + val.typeName + '</span><i class="fa
fa-close" data-id="deleteTag" data-type="tag" title="Remove
Classification"></i></span>';
});
_.each(tag.propagated, function(val) {
var crossButton = '<i class="fa fa-close"
data-id="deleteTag" data-entityguid="' + val.entityGuid + '" data-type="tag"
title="Remove Classification"></i>';
- propagatedTagListData += '<span class="btn btn-action
btn-sm btn-icon btn-blue" title=' + val.typeName + ' data-id="tagClick"><span>'
+ val.typeName + '</span>' + ((that.id !== val.entityGuid && val.entityStatus
=== "DELETED") ? crossButton : "") + '</span>';
+ propagatedTagListData += '<span class="btn btn-action
btn-sm btn-icon btn-blue" data-id="tagClick"><span>' + val.typeName + '</span>'
+ ((that.id !== val.entityGuid && val.entityStatus === "DELETED") ? crossButton
: "") + '</span>';
});
propagatedTagListData !== "" ? this.ui.propagatedTagDiv.show()
: this.ui.propagatedTagDiv.hide();
this.ui.tagList.find("span.btn").remove();
@@ -449,9 +446,7 @@ define(['require',
var that = this,
termData = "";
_.each(data, function(val) {
- // if (val.relationshipStatus == "ACTIVE") {
- termData += '<span class="btn btn-action btn-sm btn-icon
btn-blue" data-id="termClick"><span title=' + _.escape(val.displayText) + '>' +
_.escape(val.displayText) + '</span><i class="' + (val.relationshipStatus ==
"ACTIVE" ? 'fa fa-close' : "") + '" data-id="deleteTerm" data-guid="' +
val.guid + '" data-type="term" title="Remove Term"></i></span>';
- // }
+ termData += '<span class="btn btn-action btn-sm btn-icon
btn-blue" data-id="termClick"><span>' + _.escape(val.displayText) + '</span><i
class="' + (val.relationshipStatus == "ACTIVE" ? 'fa fa-close' : "") + '"
data-id="deleteTerm" data-guid="' + val.guid + '" data-type="term"
title="Remove Term"></i></span>';
});
this.ui.termList.find("span.btn").remove();
this.ui.termList.prepend(termData);
diff --git a/dashboardv3/public/js/views/entity/CreateEntityLayoutView.js
b/dashboardv3/public/js/views/entity/CreateEntityLayoutView.js
index 6492a6c..e84a9ed 100644
--- a/dashboardv3/public/js/views/entity/CreateEntityLayoutView.js
+++ b/dashboardv3/public/js/views/entity/CreateEntityLayoutView.js
@@ -516,7 +516,7 @@ define(['require',
},
getSelect: function(object) {
var value = object.value,
- entityValue = object.entityValue,
+ entityValue = _.escape(object.entityValue),
isAttribute = object.isAttribute,
isRelation = object.isRelation;
if (value.typeName === "boolean") {
@@ -546,7 +546,7 @@ define(['require',
},
getTextArea: function(object) {
var value = object.value,
- setValue = object.entityValue,
+ setValue = _.escape(object.entityValue),
isAttribute = object.isAttribute,
isRelation = object.isRelation,
structType = object.structType;
@@ -570,7 +570,7 @@ define(['require',
},
getInput: function(object) {
var value = object.value,
- entityValue = object.entityValue,
+ entityValue = _.escape(object.entityValue),
isAttribute = object.isAttribute,
isRelation = object.isRelation;
return '<input class="form-control entityInputBox ' +
(value.isOptional === true ? "false" : "true") + '"' +
diff --git
a/dashboardv3/public/js/views/entity/EntityBusinessMetaDataItemView.js
b/dashboardv3/public/js/views/entity/EntityBusinessMetaDataItemView.js
index 0220173..45b0890 100644
--- a/dashboardv3/public/js/views/entity/EntityBusinessMetaDataItemView.js
+++ b/dashboardv3/public/js/views/entity/EntityBusinessMetaDataItemView.js
@@ -153,7 +153,8 @@ define(['require',
val = options.val.value,
isMultiValued = typeName && typeName.indexOf("array<") ===
0,
businessMetadata = options.businessMetadata,
- allowOnlyNum = false;
+ allowOnlyNum = false,
+ isEnum = false;
var elType = isMultiValued ? "select" : "input";
if (!isMultiValued && !_.isEmpty(val)) {
val = _.escape(val);
@@ -175,7 +176,7 @@ define(['require',
}
}
if (typeName.indexOf("string") > -1) {
- returnEL = '<' + elType + ' type="text" data-key="' + key
+ '" data-businessMetadata="' + businessMetadata + '" data-typename="' +
typeName + '" data-multi="' + isMultiValued + '" data-tags="true"
placeholder="Enter String" class="form-control" ' + (!_.isUndefinedNull(val) ?
'value="' + val + '"' : "") + '></' + elType + '>';
+ returnEL = '<' + elType + ' type="text" data-key="' + key
+ '" data-businessMetadata="' + businessMetadata + '" data-typename="' +
typeName + '" data-multi="' + isMultiValued + '" data-tags="true"
placeholder="Enter String" class="form-control" ' + (isMultiValued === false &&
!_.isUndefinedNull(val) ? 'value="' + val + '"' : "") + '></' + elType + '>';
} else if (typeName.indexOf("boolean") > -1) {
returnEL = '<select data-key="' + key + '"
data-businessMetadata="' + businessMetadata + '" data-typename="' + typeName +
'" data-multi="' + isMultiValued + '" class="form-control">' + (isMultiValued ?
"" : '<option value="">--Select Value--</option>') + '<option value="true" ' +
(!_.isUndefinedNull(val) && val == "true" ? "selected" : "") +
'>true</option><option value="false" ' + (!_.isUndefinedNull(val) && val ==
"false" ? "selected" : "") + '>false</option></select>';
} else if (typeName.indexOf("date") > -1) {
@@ -198,6 +199,7 @@ define(['require',
allowOnlyNum = true;
returnEL = '<' + elType + ' data-key="' + key + '"
data-businessMetadata="' + businessMetadata + '" data-typename="' + typeName +
'" type="number" data-multi="' + isMultiValued + '" data-tags="true"
placeholder="Enter Number" class="form-control" ' + (!_.isUndefinedNull(val) ?
'value="' + val + '"' : "") + '></' + elType + '>';
} else if (typeName) {
+ isEnum = true;
var modTypeName = typeName;
if (isMultiValued) {
var multipleType = typeName.match("array<(.*)>");
@@ -209,30 +211,31 @@ define(['require',
if (foundEnumType) {
var enumOptions = "";
_.forEach(foundEnumType.get("elementDefs"),
function(obj) {
- enumOptions += '<option value="' + obj.value +
'">' + obj.value + '</option>'
+ enumOptions += '<option value="' +
_.escape(obj.value) + '">' + _.escape(obj.value) + '</option>'
});
- returnEL = '<select data-key="' + key + '"
data-businessMetadata="' + businessMetadata + '" data-typename="' + typeName +
'" data-multi="' + isMultiValued + '" >' + enumOptions + '</select>';
+ returnEL = '<select data-key="' + key + '"
data-businessMetadata="' + businessMetadata + '" data-typename="' + typeName +
'" data-multi="' + isMultiValued + '" data-enum="true">' + enumOptions +
'</select>';
}
- setTimeout(function() {
- if (!isMultiValued) {
- var selectEl =
that.$el.find('.custom-col-1[data-id="value"] select[data-key="' + key + '"]');
- selectEl.val((val || ""));
- selectEl.select2();
- }
- }, 0);
}
- if (isMultiValued) {
+ if (isEnum || elType === "select") {
setTimeout(function() {
- var selectEl =
that.$el.find('.custom-col-1[data-id="value"] select[data-key="' + key +
'"][data-multi="true"]');
- var data = val && val.length && (_.isArray(val) ? val
: val.split(",")) || [];
+ var selectEl =
that.$el.find('.custom-col-1[data-id="value"] select[data-key="' + key + '"]');
+ var data = [];
+ if (selectEl.data("multi")) {
+ data = val && val.length && (_.isArray(val) ? val
: val.split(",")) || [];
+ } else {
+ data = _.unescape(val);
+ }
if (allowOnlyNum) {
selectEl.parent().addClass("select2_only_number");
}
- selectEl.select2({
+ var opt = {
tags: selectEl.data("tags") ? true : false,
- multiple: true,
- data: data
- });
+ multiple: selectEl.data("multi")
+ }
+ if (!selectEl.data("enum")) {
+ opt.data = data;
+ }
+ selectEl.select2(opt);
selectEl.val(data).trigger("change");
}, 0);
}
diff --git a/dashboardv3/public/js/views/entity/EntityBusinessMetaDataView.js
b/dashboardv3/public/js/views/entity/EntityBusinessMetaDataView.js
index 75d210e..fe13f01 100644
--- a/dashboardv3/public/js/views/entity/EntityBusinessMetaDataView.js
+++ b/dashboardv3/public/js/views/entity/EntityBusinessMetaDataView.js
@@ -25,8 +25,8 @@ define([
"utils/Utils",
"utils/Messages",
"utils/CommonViewFunction",
- 'moment',
- 'utils/Globals'
+ "moment",
+ "utils/Globals"
], function(require, Backbone, EntityBusinessMetaDataView_tmpl,
EntityBusinessMetaDataItemView, VEntity, Utils, Messages, CommonViewFunction,
moment, Globals) {
"use strict";
@@ -237,7 +237,7 @@ define([
}
}
- attrLi += "<tr><td>" + _.escape(key) + " (" +
_.escape(val.typeName) + ")</td><td>" + _.escape(newVal) + "</td></tr>";
+ attrLi += "<tr><td
class='business-metadata-detail-attr-key'>" + _.escape(key) + " (" +
_.escape(val.typeName) + ")</td><td>" + _.escape(newVal) + "</td></tr>";
}
});
li += that.associateAttributePanel(obj, attrLi);
@@ -250,7 +250,7 @@ define([
},
associateAttributePanel: function(obj, tableBody) {
return '<div class="panel panel-default custom-panel
expand_collapse_panel-icon no-border business-metadata-detail-attr">' +
- '<div class="panel-heading" data-toggle="collapse" href="#' +
_.escape(obj.get("__internal_UI_businessMetadataName")) + '"
aria-expanded="true" style="width: 70%;">' +
+ '<div class="panel-heading" data-toggle="collapse" href="#' +
_.escape(obj.get("__internal_UI_businessMetadataName")) + '"
aria-expanded="true" style="width: 90%;">' +
'<h4 class="panel-title"> <a>' +
_.escape(obj.get("__internal_UI_businessMetadataName")) + '</a></h4>' +
'<div class="btn-group pull-left"> <button type="button"
title="Collapse"><i class="ec-icon fa"></i></button></div>' +
'</div>' +
diff --git a/dashboardv3/public/js/views/entity/EntityLabelDefineView.js
b/dashboardv3/public/js/views/entity/EntityLabelDefineView.js
index 5e5fd6e..d3ddf55 100644
--- a/dashboardv3/public/js/views/entity/EntityLabelDefineView.js
+++ b/dashboardv3/public/js/views/entity/EntityLabelDefineView.js
@@ -72,7 +72,7 @@ define(['require',
populateLabelOptions: function() {
var that = this,
str = this.labels.map(function(label) {
- return "<option selected > " + label + " </option>";
+ return "<option selected > " + _.escape(label) + "
</option>";
});
this.ui.addLabelOptions.html(str);
var getLabelData = function(data, selectedData) {
@@ -104,7 +104,7 @@ define(['require',
delay: 250,
data: function(params) {
return {
- prefixString: _.escape(params.term), // search term
+ prefixString: params.term, // search term
fieldName: '__labels'
};
},
@@ -131,7 +131,7 @@ define(['require',
}
},
onChangeLabelChange: function() {
- this.labels = this.ui.addLabelOptions.val().map(function(v) {
return _.escape(v) });
+ this.labels = this.ui.addLabelOptions.val();
},
handleBtnClick: function() {
this.swapItem = !this.swapItem;
diff --git a/dashboardv3/public/js/views/entity/EntityUserDefineItemView.js
b/dashboardv3/public/js/views/entity/EntityUserDefineItemView.js
index bcc0845..3a6bd63 100644
--- a/dashboardv3/public/js/views/entity/EntityUserDefineItemView.js
+++ b/dashboardv3/public/js/views/entity/EntityUserDefineItemView.js
@@ -99,7 +99,7 @@ define(['require',
var el = e.currentTarget;
this.handleCharSupport(el);
if (!el.value.trim().includes(':')) {
- this.items[el.dataset.index].value = _.escape(el.value.trim());
+ this.items[el.dataset.index].value = el.value.trim();
}
},
handleCharSupport: function(el) {
diff --git a/dashboardv3/public/js/views/glossary/GlossaryDetailLayoutView.js
b/dashboardv3/public/js/views/glossary/GlossaryDetailLayoutView.js
index be480bf..65af810 100644
--- a/dashboardv3/public/js/views/glossary/GlossaryDetailLayoutView.js
+++ b/dashboardv3/public/js/views/glossary/GlossaryDetailLayoutView.js
@@ -296,7 +296,7 @@ define(['require',
categories = "";
_.each(data, function(val) {
var name = _.escape(val.displayText);
- categories += '<span data-guid="' + val.categoryGuid + '""
class="btn btn-action btn-sm btn-icon btn-blue" data-id="categoryClick"><span
title=' + name + '>' + name + '</span><i class="fa fa-close"
data-id="removeCategory" data-type="category" title="Remove
Category"></i></span>';
+ categories += '<span data-guid="' + val.categoryGuid + '"
class="btn btn-action btn-sm btn-icon btn-blue" data-id="categoryClick"><span>'
+ name + '</span><i class="fa fa-close" data-id="removeCategory"
data-type="category" title="Remove Category"></i></span>';
});
this.ui.categoryList.find("span.btn").remove();
this.ui.categoryList.prepend(categories);
@@ -306,7 +306,7 @@ define(['require',
terms = "";
_.each(data, function(val) {
var name = _.escape(val.displayText);
- terms += '<span data-guid="' + val.termGuid + '""
class="btn btn-action btn-sm btn-icon btn-blue" data-id="termClick"><span
title=' + name + '>' + name + '</span><i class="fa fa-close"
data-id="removeTerm" data-type="term" title="Remove Term"></i></span>';
+ terms += '<span data-guid="' + val.termGuid + '"
class="btn btn-action btn-sm btn-icon btn-blue" data-id="termClick"><span>' +
name + '</span><i class="fa fa-close" data-id="removeTerm" data-type="term"
title="Remove Term"></i></span>';
});
this.ui.termList.find("span.btn").remove();
this.ui.termList.prepend(terms);
@@ -316,7 +316,7 @@ define(['require',
var that = this,
tagData = "";
_.each(tagObject, function(val) {
- tagData += '<span class="btn btn-action btn-sm btn-icon
btn-blue" data-id="tagClickTerm"><span title=' + val.typeName + '>' +
val.typeName + '</span><i class="fa fa-close" data-id="removeTagTerm"
data-type="tag" title="Remove Classification"></i></span>';
+ tagData += '<span class="btn btn-action btn-sm btn-icon
btn-blue" data-id="tagClickTerm"><span>' + val.typeName + '</span><i class="fa
fa-close" data-id="removeTagTerm" data-type="tag" title="Remove
Classification"></i></span>';
});
this.ui.tagList.find("span.btn").remove();
this.ui.tagList.prepend(tagData);
@@ -407,7 +407,7 @@ define(['require',
tagName = $(e.currentTarget).text(),
termName = this.data.name;
CommonViewFunction.deleteTag(_.extend({}, {
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from" + " " + "<b>" + _.escape(termName)
+ "?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from <b>" + _.escape(termName) +
"?</b></div>",
titleMessage: Messages.removeTag,
okText: "Remove",
showLoader: that.showLoader.bind(that),
@@ -431,7 +431,7 @@ define(['require',
selectedGuid: guid,
model: that.data,
collection: that.glossaryCollection,
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(name) + "</b> assignment from" + " " + "<b>" +
_.escape(that.data.name) + "?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(name) + "</b> assignment from <b>" + _.escape(that.data.name) +
"?</b></div>",
titleMessage: Messages.glossary[that.isTermView ?
"removeCategoryfromTerm" : "removeTermfromCategory"],
isCategoryView: that.isCategoryView,
isTermView: that.isTermView,
@@ -454,7 +454,7 @@ define(['require',
require(['views/tag/TagDetailTableLayoutView'],
function(TagDetailTableLayoutView) {
if (that.RTagTableLayoutView) {
that.RTagTableLayoutView.show(new
TagDetailTableLayoutView(_.extend({}, options, {
- "entityName": that.ui.title.text(),
+ "entityName": _.escape(that.ui.title.text()),
"fetchCollection": that.getData.bind(that),
"entity": that.data
})));
diff --git
a/dashboardv3/public/js/views/glossary/TermRelationAttributeLayoutView.js
b/dashboardv3/public/js/views/glossary/TermRelationAttributeLayoutView.js
index bf9757b..ded1ab9 100644
--- a/dashboardv3/public/js/views/glossary/TermRelationAttributeLayoutView.js
+++ b/dashboardv3/public/js/views/glossary/TermRelationAttributeLayoutView.js
@@ -231,7 +231,7 @@ define(['require',
getTerms: function(key) {
var terms = _.map(that.data[key], function(obj) {
var name = _.escape(obj.displayText);
- return '<span data-guid="' + obj.termGuid + '"
class="btn btn-action btn-sm btn-icon btn-blue" title=' + _.escape(name) + '
data-id="termClick"><span>' + name + '</span><i class="fa fa-close"
data-id="deleteAttribute" data-attributename="' + key + '" data-termguid="' +
obj.termGuid + '" data-type="term" title="Remove Term"></i></span>';
+ return '<span data-guid="' + obj.termGuid + '"
class="btn btn-action btn-sm btn-icon btn-blue" data-id="termClick"><span>' +
name + '</span><i class="fa fa-close" data-id="deleteAttribute"
data-attributename="' + key + '" data-termguid="' + obj.termGuid + '"
data-type="term" title="Remove Term"></i></span>';
}).join(""),
attributeButtons = "";
if (terms.length) {
diff --git a/dashboardv3/public/js/views/graph/LineageUtils.js
b/dashboardv3/public/js/views/graph/LineageUtils.js
index ed66782..bd85d77 100644
--- a/dashboardv3/public/js/views/graph/LineageUtils.js
+++ b/dashboardv3/public/js/views/graph/LineageUtils.js
@@ -326,18 +326,6 @@ define(['require', 'utils/Utils'], function(require,
Utils) {
shapeSvg.attr("stroke", "#fb4200")
}
- if (node.isIncomplete === true) {
- parent.attr("class", "node isIncomplete show");
- parent.insert("foreignObject")
- .attr("x", "-25")
- .attr("y", "-25")
- .attr("width", "50")
- .attr("height", "50")
- .append("xhtml:div")
- .insert("i")
- .attr("class", "fa fa-hourglass-half");
- }
-
if ($defs.select('pattern[id="img_' + imgName + '"]').empty()) {
var $pattern = $defs.append("pattern")
.attr("x", "0%")
diff --git a/dashboardv3/public/js/views/graph/PropagationPropertyModal.js
b/dashboardv3/public/js/views/graph/PropagationPropertyModal.js
index a90115c..5839959 100644
--- a/dashboardv3/public/js/views/graph/PropagationPropertyModal.js
+++ b/dashboardv3/public/js/views/graph/PropagationPropertyModal.js
@@ -151,7 +151,7 @@ define(['require',
fromEntity = this.lineageData.guidEntityMap[obj.fromEntityId],
toEntity = this.lineageData.guidEntityMap[obj.toEntityId];
if (fromEntity && toEntity) {
- this.ui.edgeDetailName.html(fromEntity.displayText + " <span
class='navigation-font'><i class='fa fa-long-arrow-right fa-color'></i></span>
" + toEntity.displayText);
+ this.ui.edgeDetailName.html(_.escape(fromEntity.displayText) +
" <span class='navigation-font'><i class='fa fa-long-arrow-right
fa-color'></i></span> " + _.escape(toEntity.displayText));
}
if (obj && obj.relationshipId) {
this.showLoader();
diff --git a/dashboardv3/public/js/views/graph/RelationshipLayoutView.js
b/dashboardv3/public/js/views/graph/RelationshipLayoutView.js
index 8c58faf..06a3bfb 100644
--- a/dashboardv3/public/js/views/graph/RelationshipLayoutView.js
+++ b/dashboardv3/public/js/views/graph/RelationshipLayoutView.js
@@ -146,12 +146,12 @@ define(['require',
updateRelationshipDetails: function(options) {
var data = options.obj.value,
typeName = data.typeName || options.obj.name,
- searchString = options.searchString,
+ searchString = _.escape(options.searchString),
listString = "",
getEntityTypelist = function(options) {
var activeEntityColor = "#4a90e2",
deletedEntityColor = "#BB5838",
- entityTypeHtml = '',
+ entityTypeHtml = '<pre>',
getdefault = function(obj) {
var options = obj.options,
status =
(Enums.entityStateReadOnly[options.entityStatus || options.status] ? "
deleted-relation" : ''),
@@ -197,13 +197,13 @@ define(['require',
entityTypeHtml = getdefault({
"color": activeEntityColor,
"options": options,
- "name": _.escape(name)
+ "name": name
});
} else if (options.relationshipStatus ==
"DELETED") {
entityTypeHtml = getWithButton({
"color": activeEntityColor,
"options": options,
- "name": _.escape(name),
+ "name": name,
"relationship": true
})
}
@@ -211,18 +211,17 @@ define(['require',
entityTypeHtml = getWithButton({
"color": deletedEntityColor,
"options": options,
- "name": _.escape(name),
+ "name": name,
"entity": true
})
} else {
-
entityTypeHtml = getdefault({
"color": activeEntityColor,
"options": options,
- "name": _.escape(name)
+ "name": name
});
}
- return entityTypeHtml;
+ return entityTypeHtml + '</pre>';
};
this.ui.searchNode.hide();
this.$("[data-id='typeName']").text(typeName);
diff --git a/dashboardv3/public/js/views/schema/SchemaLayoutView.js
b/dashboardv3/public/js/views/schema/SchemaLayoutView.js
index 579c373..79ddc57 100644
--- a/dashboardv3/public/js/views/schema/SchemaLayoutView.js
+++ b/dashboardv3/public/js/views/schema/SchemaLayoutView.js
@@ -207,7 +207,7 @@ define(['require',
className: "searchTableName",
formatter: _.extend({},
Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
- var value =
model.get('attributes')[key];
+ var value =
_.escape(model.get('attributes')[key]);
if (key === "name" &&
model.get('guid')) {
var nameHtml = '<a
href="#!/detailPage/' + model.get('guid') + '">' + value + '</a>';
if (model.get('status') &&
Enums.entityStateReadOnly[model.get('status')]) {
@@ -291,7 +291,7 @@ define(['require',
CommonViewFunction.deleteTag({
tagName: tagName,
guid: guid,
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + "
?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from <b>" + _.escape(assetName) + "
?</b></div>",
titleMessage: Messages.removeTag,
okText: "Remove",
showLoader: that.showLoader.bind(that),
diff --git a/dashboardv3/public/js/views/search/GlobalSearchLayoutView.js
b/dashboardv3/public/js/views/search/GlobalSearchLayoutView.js
index afae712..88dd418 100644
--- a/dashboardv3/public/js/views/search/GlobalSearchLayoutView.js
+++ b/dashboardv3/public/js/views/search/GlobalSearchLayoutView.js
@@ -305,12 +305,10 @@ define(["require",
}
item.serviceType =
Globals.serviceTypeMap[item.typeName];
options.entityData = item;
- var imgEl = $('<img src="' +
Utils.getEntityIconPath(options) + '">').on("error", function(error, s) {
+ var img = $('<img src="' +
Utils.getEntityIconPath(options) + '">').on("error", function(error, s) {
this.src =
Utils.getEntityIconPath(_.extend(options, { errorUrl: this.src }));
});
- var img = $('<div
class="globalsearchImgItem isIncomplete ' + (item.isIncomplete ? "show" : "") +
'"><i class="fa fa-hourglass-half"></i><div>').prepend(imgEl);
-
var span = $("<span>" +
getHighlightedTerm(item.itemText) + "</span>").prepend(img);
li = $("<li
class='with-icon'>").append(span);
} else {
diff --git a/dashboardv3/public/js/views/search/SearchDefaultLayoutView.js
b/dashboardv3/public/js/views/search/SearchDefaultLayoutView.js
index c588a8d..bae01bf 100644
--- a/dashboardv3/public/js/views/search/SearchDefaultLayoutView.js
+++ b/dashboardv3/public/js/views/search/SearchDefaultLayoutView.js
@@ -311,7 +311,7 @@ define(["require", "backbone", "utils/Globals",
"hbs!tmpl/search/SearchDefaultLa
attrObj: attrTypeObj
}), this.RQueryBuilderEntity);
- this.ui.entityName.html(that.options.value.type);
+
this.ui.entityName.html(_.escape(that.options.value.type));
}
}
diff --git a/dashboardv3/public/js/views/search/SearchFilterBrowseLayoutView.js
b/dashboardv3/public/js/views/search/SearchFilterBrowseLayoutView.js
index 1ce52ce..86916f4 100644
--- a/dashboardv3/public/js/views/search/SearchFilterBrowseLayoutView.js
+++ b/dashboardv3/public/js/views/search/SearchFilterBrowseLayoutView.js
@@ -40,7 +40,6 @@ define([
RBusinessMetadataTreeRender:
'[data-id="r_businessMetadataTreeRender"]'
},
ui: {
- //search
searchNode: '[data-id="searchNode"]',
sliderBar: '[data-id="sliderBar"]',
menuItems: ".menu-items"
@@ -66,16 +65,9 @@ define([
};
events["keyup " + this.ui.searchNode] = function(e) {
- // var type = $(e.currentTarget).data("type");
- // var showEmpty = false;
- //
this.RClassificationTreeRender.currentView.onSearchClassificationNode(showEmpty);
- //
this.REntityTreeRender.currentView.onSearchEntityNode(showEmpty);
- var searchString = e.target.value;
+ var searchString = _.escape(e.target.value);
if (searchString.trim() === "") {
this.$(".panel").removeClass("hide");
- // showEmpty = true;
- //
this.RClassificationTreeRender.currentView.onSearchClassificationNode(showEmpty);
- //
this.REntityTreeRender.currentView.onSearchEntityNode(showEmpty);
}
this.entitySearchTree = this.$('[data-id="entitySearchTree"]');
this.classificationSearchTree =
this.$('[data-id="classificationSearchTree"]');
@@ -99,7 +91,6 @@ define([
events["click " + this.ui.menuItems] = function(e) {
e.stopPropagation();
- //this.$('.menu-items').removeClass('open');
};
return events;
},
diff --git a/dashboardv3/public/js/views/search/SearchResultLayoutView.js
b/dashboardv3/public/js/views/search/SearchResultLayoutView.js
index 2528174..ee6be8c 100644
--- a/dashboardv3/public/js/views/search/SearchResultLayoutView.js
+++ b/dashboardv3/public/js/views/search/SearchResultLayoutView.js
@@ -723,12 +723,8 @@ define(['require',
}
});
}
- var img = "",
- isIncompleteClass = "isIncomplete
search-result-page";
- if (obj.isIncomplete === true) {
- isIncompleteClass += " show";
- }
- img = "<div class='" + isIncompleteClass + "'><img
data-imgGuid='" + obj.guid + "' class='searchTableLogoLoader'><i class='fa
fa-hourglass-half'></i></div>";
+ var img = "";
+ img = "<div><img data-imgGuid='" + obj.guid + "'
class='searchTableLogoLoader'></div>";
getImageData({ imagePath:
Utils.getEntityIconPath({ entityData: obj }) });
return (img + nameHtml);
}
@@ -890,7 +886,7 @@ define(['require',
if
(values[values.length - 1] === "") { values.pop(); }
if (values[0] === "")
{ values.shift(); }
_.each(values,
function(names) {
-
valueOfArray.push('<span class="json-string"><a class="btn btn-action btn-sm
btn-blue btn-icon" ><span title="" data-original-title="' + names + '" >' +
names + '</span></a></span>');
+
valueOfArray.push('<span class="json-string"><a class="btn btn-action btn-sm
btn-blue btn-icon" ><span>' + _.escape(names) + '</span></a></span>');
});
return
valueOfArray.join(' ');
}
@@ -900,7 +896,7 @@ define(['require',
valueOfArray = [];
if (customAttributes) {
_.each(Object.keys(customAttributes), function(value, index) {
-
valueOfArray.push('<span class="json-string"><a class="btn btn-action btn-sm
btn-blue btn-icon" ><span title="" data-original-title="' + value + ' : ' +
Object.values(customAttributes)[index] + '" ><span>' + value + '</span> :
<span>' + Object.values(customAttributes)[index] + '</span></span></a></span>');
+
valueOfArray.push('<span class="json-string"><a class="btn btn-action btn-sm
btn-blue btn-icon" ><span><span>' + _.escape(value) + '</span> : <span>' +
_.escape(Object.values(customAttributes)[index]) + '</span></span></a></span>');
});
return
valueOfArray.join(' ');
}
@@ -960,7 +956,7 @@ define(['require',
var modelObj = model.toJSON();
if (key == "name") {
var nameHtml = "",
- name = modelObj[key];
+ name = _.escape(modelObj[key]);
if (modelObj.guid) {
nameHtml = '<a title="' + name +
'" href="#!/detailPage/' + modelObj.guid + (that.fromView ? "?from=" +
that.fromView : "") + '">' + name + '</a>';
} else {
@@ -1154,7 +1150,7 @@ define(['require',
tagName: tagName,
guid: guid,
associatedGuid: guid != entityGuid ? entityGuid : null,
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + "
?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from <b>" + _.escape(assetName) + "
?</b></div>",
titleMessage: Messages.removeTag,
okText: "Remove",
showLoader: that.showLoader.bind(that),
@@ -1184,7 +1180,7 @@ define(['require',
relationshipGuid: termObj.relationGuid
},
collection: that.glossaryCollection,
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(termName) + "</b> assignment from" + " " + "<b>" + assetname +
"?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(termName) + "</b> assignment from <b>" + _.escape(assetname) +
"?</b></div>",
titleMessage: Messages.glossary.removeTermfromEntity,
isEntityView: true,
buttonText: "Remove",
diff --git
a/dashboardv3/public/js/views/search/tree/ClassificationTreeLayoutView.js
b/dashboardv3/public/js/views/search/tree/ClassificationTreeLayoutView.js
index 67ac7c6..0b2227f 100644
--- a/dashboardv3/public/js/views/search/tree/ClassificationTreeLayoutView.js
+++ b/dashboardv3/public/js/views/search/tree/ClassificationTreeLayoutView.js
@@ -724,7 +724,7 @@ define([
return activeTagObj.name.toLowerCase() ===
obj.name.toLowerCase();
});
if (duplicateCheck) {
- duplicateAttributeList.push(obj.name);
+ duplicateAttributeList.push(_.escape(obj.name));
}
});
var notifyObj = {
diff --git
a/dashboardv3/public/js/views/search/tree/CustomFilterTreeLayoutView.js
b/dashboardv3/public/js/views/search/tree/CustomFilterTreeLayoutView.js
index 585ec98..53e9da8 100644
--- a/dashboardv3/public/js/views/search/tree/CustomFilterTreeLayoutView.js
+++ b/dashboardv3/public/js/views/search/tree/CustomFilterTreeLayoutView.js
@@ -429,7 +429,7 @@ define([
var notifyObj = {
modal: true,
html: true,
- text: Messages.conformation.deleteMessage + "<b>" +
options.model.get('name') + "</b>" + " ?",
+ text: Messages.conformation.deleteMessage + "<b>" +
_.escape(options.model.get('name')) + "</b>" + " ?",
ok: function(argument) {
that.onDeleteNotifyOk(options);
},
diff --git a/dashboardv3/public/js/views/tag/AddTagModalView.js
b/dashboardv3/public/js/views/tag/AddTagModalView.js
index df280fb..2e3df3f 100644
--- a/dashboardv3/public/js/views/tag/AddTagModalView.js
+++ b/dashboardv3/public/js/views/tag/AddTagModalView.js
@@ -355,7 +355,7 @@ define(['require',
var str = '<option value=""' + (!that.tagModel ?
'selected' : '') + '>-- Select ' + typeName + " --</option>";
var enumValue = typeNameValue.get('elementDefs');
_.each(enumValue, function(key, value) {
- str += '<option ' + ((that.tagModel && key.value
=== that.tagModel.attributes[name]) ? 'selected' : '') + '>' + key.value +
'</option>';
+ str += '<option ' + ((that.tagModel && key.value
=== that.tagModel.attributes[name]) ? 'selected' : '') + '>' +
_.escape(key.value) + '</option>';
})
that.ui.tagAttribute.append('<div
class="form-group"><label>' + name + '</label>' + ' (' + typeName + ')' +
'<select class="form-control attributeInputVal
attrName" data-key="' + name + '">' + str + '</select></div>');
@@ -393,7 +393,7 @@ define(['require',
}
},
getElement: function(labelName, typeName) {
- var value = this.tagModel && this.tagModel.attributes ?
(this.tagModel.attributes[labelName] || "") : "",
+ var value = this.tagModel && this.tagModel.attributes ?
(this.tagModel.attributes[_.unescape(labelName)] || "") : "",
isTypeNumber = typeName === "int" || typeName === "byte" ||
typeName === "short" || typeName === "double" || typeName === "float",
inputClassName = "form-control attributeInputVal attrName";
if (isTypeNumber) {
@@ -405,7 +405,7 @@ define(['require',
'<option value="true">true</option>' +
'<option value="false">false</option></select>';
} else {
- return '<input type="text" value="' + value + '" class="' +
inputClassName + '" data-key="' + labelName + '" data-type="' + typeName +
'"/>';
+ return '<input type="text" value="' + _.escape(value) + '"
class="' + inputClassName + '" data-key="' + labelName + '" data-type="' +
typeName + '"/>';
}
},
diff --git a/dashboardv3/public/js/views/tag/TagAttributeDetailLayoutView.js
b/dashboardv3/public/js/views/tag/TagAttributeDetailLayoutView.js
index 60f3b6d..4800241 100644
--- a/dashboardv3/public/js/views/tag/TagAttributeDetailLayoutView.js
+++ b/dashboardv3/public/js/views/tag/TagAttributeDetailLayoutView.js
@@ -232,7 +232,7 @@ define(['require',
return activeTagObj.name.toLowerCase() ===
obj.name.toLowerCase();
});
if (duplicateCheck) {
- duplicateAttributeList.push(obj.name);
+
duplicateAttributeList.push(_.escape(obj.name));
} else {
saveObj.attributeDefs.push(obj);
}
diff --git a/dashboardv3/public/js/views/tag/TagDetailTableLayoutView.js
b/dashboardv3/public/js/views/tag/TagDetailTableLayoutView.js
index 1545a65..fd84dbb 100644
--- a/dashboardv3/public/js/views/tag/TagDetailTableLayoutView.js
+++ b/dashboardv3/public/js/views/tag/TagDetailTableLayoutView.js
@@ -207,7 +207,7 @@ define(['require',
tagName: tagName,
guid: that.guid,
associatedGuid: that.guid != entityGuid ? entityGuid :
null,
- msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.entityName +
"?</b></div>",
+ msg: "<div class='ellipsis-with-margin'>Remove: " + "<b>"
+ _.escape(tagName) + "</b> assignment from <b>" + this.entityName +
"?</b></div>",
titleMessage: Messages.removeTag,
okText: "Remove",
showLoader: function() {