You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ma...@apache.org on 2016/12/23 02:07:35 UTC
incubator-atlas git commit: ATLAS-1402: UI issues due to v2 API
integration
Repository: incubator-atlas
Updated Branches:
refs/heads/master 40e639edd -> 590b38ac5
ATLAS-1402: UI issues due to v2 API integration
Signed-off-by: Madhan Neethiraj <ma...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/590b38ac
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/590b38ac
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/590b38ac
Branch: refs/heads/master
Commit: 590b38ac59dfcd94c3b31e93aa5e4f8143792216
Parents: 40e639e
Author: kalyanikk <ka...@freestoneinfotech.com>
Authored: Thu Dec 22 15:11:58 2016 +0530
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Thu Dec 22 17:47:40 2016 -0800
----------------------------------------------------------------------
dashboardv2/public/css/scss/override.scss | 4 --
dashboardv2/public/css/scss/tag.scss | 4 +-
dashboardv2/public/index.html | 1 +
.../public/js/utils/CommonViewFunction.js | 35 +++++++------
dashboardv2/public/js/utils/Utils.js | 14 ++---
.../js/views/audit/AuditTableLayoutView.js | 18 +++++--
.../views/audit/CreateAuditTableLayoutView.js | 4 +-
.../BusinessCatalogDetailLayoutView.js | 54 +-------------------
.../business_catalog/BusinessCatalogHeader.js | 2 +-
.../js/views/business_catalog/TreeLayoutView.js | 10 ++--
.../views/detail_page/DetailPageLayoutView.js | 18 ++++---
.../js/views/entity/CreateEntityLayoutView.js | 12 +++--
.../public/js/views/schema/SchemaLayoutView.js | 4 +-
.../public/js/views/search/SearchLayoutView.js | 2 +-
.../js/views/search/SearchResultLayoutView.js | 17 +++---
.../public/js/views/tag/CreateTagLayoutView.js | 4 +-
.../views/tag/TagAttributeDetailLayoutView.js | 43 +++++++++++-----
.../js/views/tag/TagDetailTableLayoutView.js | 6 +--
.../public/js/views/tag/TagLayoutView.js | 9 ++--
.../public/js/views/tag/addTagModalView.js | 13 ++---
20 files changed, 129 insertions(+), 145 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/css/scss/override.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/override.scss b/dashboardv2/public/css/scss/override.scss
index fab8c25..b0f5c7f 100644
--- a/dashboardv2/public/css/scss/override.scss
+++ b/dashboardv2/public/css/scss/override.scss
@@ -155,10 +155,6 @@
width: 300px !important;
}
-.select2-container--default .select2-selection--single .select2-selection__rendered {
- width: 327px !important;
-}
-
.typeLOV {
.select2-container--default {
.select2-selection--multiple {
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/css/scss/tag.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/tag.scss b/dashboardv2/public/css/scss/tag.scss
index 0b931d0..1f9561d 100644
--- a/dashboardv2/public/css/scss/tag.scss
+++ b/dashboardv2/public/css/scss/tag.scss
@@ -365,10 +365,10 @@ legend.scheduler-border {
.spanEntityType {
position: absolute;
- right: 38px;
+ right: 45px;
top: 10px;
cursor: help;
- width: 45px;
+ width: 40px;
overflow: hidden;
z-index: 9;
text-overflow: ellipsis;
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/index.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/index.html b/dashboardv2/public/index.html
index 36ddef5..dcda435 100644
--- a/dashboardv2/public/index.html
+++ b/dashboardv2/public/index.html
@@ -30,6 +30,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8; Cache-Control: no-cache" />
+ <meta http-equiv="X-Frame-Options" content="deny">
<title>Atlas</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width">
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/utils/CommonViewFunction.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/CommonViewFunction.js b/dashboardv2/public/js/utils/CommonViewFunction.js
index d8cf9b0..d3a3f67 100644
--- a/dashboardv2/public/js/utils/CommonViewFunction.js
+++ b/dashboardv2/public/js/utils/CommonViewFunction.js
@@ -99,9 +99,9 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
}
if (value.length > 1) {
- scope.$('td div[data-id="' + id + '"]').html('<a href="#!/detailPage/' + id + '">' + value + '</a>');
+ scope.$('td div[data-id="' + id + '"]').html('<a href="#!/detailPage/' + id + '">' + _.escape(value) + '</a>');
} else {
- scope.$('td div[data-id="' + id + '"]').html('<a href="#!/detailPage/' + id + '">' + id + '</a>');
+ scope.$('td div[data-id="' + id + '"]').html('<a href="#!/detailPage/' + id + '">' + _.escape(id) + '</a>');
}
if (deleteButton.length) {
scope.$('td div[data-id="' + id + '"]').addClass('block readOnlyLink');
@@ -118,6 +118,7 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
});
}
_.keys(valueObject).map(function(key) {
+ key = _.escape(key)
var keyValue = valueObject[key],
valueOfArray = [];
if (_.isArray(keyValue) || _.isObject(keyValue)) {
@@ -132,7 +133,7 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
readOnly = false;
if (_.isString(inputOutputField) || _.isBoolean(inputOutputField) || _.isNumber(inputOutputField)) {
if (inputOutputField.indexOf("$") == -1) {
- valueOfArray.push('<span>' + inputOutputField + '</span>');
+ valueOfArray.push('<span>' + _.escape(inputOutputField) + '</span>');
}
} else if (_.isObject(inputOutputField) && !inputOutputField.attributes && !id) {
_.each(inputOutputField, function(objValue, objKey) {
@@ -141,7 +142,7 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
if (_.isObject(value)) {
value = JSON.stringify(value);
}
- valueOfArray.push('<span>' + objKey + ':' + value + '</span>');
+ valueOfArray.push('<span>' + _.escape(objKey) + ':' + _.escape(value) + '</span>');
}
});
}
@@ -149,18 +150,18 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
if (id && inputOutputField) {
if (inputOutputField.attributes) {
if (inputOutputField.attributes.name) {
- tempLink += '<a href="#!/detailPage/' + id + '">' + inputOutputField.attributes.name + '</a>'
+ tempLink += '<a href="#!/detailPage/' + id + '">' + _.escape(inputOutputField.attributes.name) + '</a>'
} else if (inputOutputField.attributes.qualifiedName) {
- tempLink += '<a href="#!/detailPage/' + id + '">' + inputOutputField.attributes.qualifiedName + '</a>'
+ tempLink += '<a href="#!/detailPage/' + id + '">' + _.escape(inputOutputField.attributes.qualifiedName) + '</a>'
} else if (inputOutputField.typeName) {
- tempLink += '<a href="#!/detailPage/' + id + '">' + inputOutputField.typeName + '</a>'
+ tempLink += '<a href="#!/detailPage/' + id + '">' + _.escape(inputOutputField.typeName) + '</a>'
} else {
tempLink += '<a href="#!/detailPage/' + id + '">' + id + '</a>'
}
} else if (inputOutputField.name) {
- tempLink += '<a href="#!/detailPage/' + id + '">' + inputOutputField.name + '</a>';
+ tempLink += '<a href="#!/detailPage/' + id + '">' + _.escape(inputOutputField.name) + '</a>';
} else if (inputOutputField.qualifiedName) {
- tempLink += '<a href="#!/detailPage/' + id + '">' + inputOutputField.qualifiedName + '</a>'
+ tempLink += '<a href="#!/detailPage/' + id + '">' + _.escape(inputOutputField.qualifiedName) + '</a>'
} else {
var fetch = true;
fetchInputOutputValue(id);
@@ -191,7 +192,7 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
if (searchTable) {
table = subLink;
} else {
- table += '<tr><td>' + key + '</td><td>' + subLink + '</td></tr>';
+ table += '<tr><td>' + key + '</td><td>' + _.escape(subLink) + '</td></tr>';
}
} else {
if (key.indexOf("Time") !== -1 || key == "retention") {
@@ -208,7 +209,7 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
table = valueObject[key];
}
} else {
- table += '<tr><td>' + key + '</td><td>' + valueObject[key] + '</td></tr>';
+ table += '<tr><td>' + key + '</td><td>' + _.escape(valueObject[key]) + '</td></tr>';
}
}
}
@@ -236,13 +237,13 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
if (i == 0) {
href = splitUrlWithoutTerm[i];
urlList.push({
- value: splitUrlWithoutTerm[i],
+ value: _.escape(splitUrlWithoutTerm[i]),
href: href
});
} else {
href += "/terms/" + splitUrlWithoutTerm[i];
urlList.push({
- value: splitUrlWithoutTerm[i],
+ value: _.escape(splitUrlWithoutTerm[i]),
href: href
});
};
@@ -254,7 +255,7 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
var li = "";
if (options.urlList) {
_.each(options.urlList, function(object) {
- li += '<li><a class="link" href="#!/taxonomy/detailCatalog/api/atlas/v1/taxonomies/' + object.href + '?load=true">' + object.value + '</a></li>';
+ li += '<li><a class="link" href="#!/taxonomy/detailCatalog/api/atlas/v1/taxonomies/' + object.href + '?load=true">' + _.escape(object.value) + '</a></li>';
});
}
if (options.scope) {
@@ -300,8 +301,8 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
}
if (tagName.term) {
terms.push({
- deleteHtml: '<a class="pull-left" title="Remove Term"><i class="fa fa-trash" data-id="tagClick" data-type="term" data-assetname="' + model.get("name") + '" data-name="' + tagName.fullName + '" data-guid="' + (model.get('$id$').id || model.get('$id$')) + '" ></i></a>',
- url: tagName.fullName.split(".").join("/"),
+ deleteHtml: '<a class="pull-left" title="Remove Term"><i class="fa fa-trash" data-id="tagClick" data-type="term" data-assetname="' + _.escape(model.get("name")) + '" data-name="' + tagName.fullName + '" data-guid="' + (model.get('$id$').id || model.get('$id$')) + '" ></i></a>',
+ url: _.unescape(tagName.fullName).split(".").join("/"),
name: tagName.fullName
});
}
@@ -312,7 +313,7 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
className += "showHideDiv hide";
}
obj['valueUrl'] = CommonViewFunction.breadcrumbUrlMaker(obj.url);
- html += '<div class="' + className + '" dataterm-name="' + obj.name + '"><div class="liContent"></div>' + obj.deleteHtml + '</div>';
+ html += '<div class="' + className + '" dataterm-name="' + _.escape(obj.name) + '"><div class="liContent"></div>' + obj.deleteHtml + '</div>';
})
if (terms.length > 1) {
html += '<div><a href="javascript:void(0)" data-id="showMoreLessTerm" class="inputTag inputTagGreen"><span>Show More </span><i class="fa fa-angle-right"></i></a></div>'
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/utils/Utils.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/Utils.js b/dashboardv2/public/js/utils/Utils.js
index 48963ad..d3a1b18 100644
--- a/dashboardv2/public/js/utils/Utils.js
+++ b/dashboardv2/public/js/utils/Utils.js
@@ -49,33 +49,33 @@ define(['require', 'utils/Globals', 'pnotify'], function(require, Globals, pnoti
};
var notify = function(options) {
- new pnotify(_.extend({ icon: true, hide: true, delay: 3000,remove:true }, options));
+ new pnotify(_.extend({ icon: true, hide: true, delay: 3000, remove: true }, options));
}
Utils.notifyInfo = function(options) {
notify({
type: "info",
- text: options.content || "Info message."
+ text: _.escape(options.content) || "Info message."
});
};
Utils.notifyWarn = function(options) {
notify({
type: "notice",
- text: options.content || "Info message."
+ text: _.escape(options.content) || "Info message."
});
};
Utils.notifyError = function(options) {
notify({
type: "error",
- text: options.content || "Error occurred."
+ text: _.escape(options.content) || "Error occurred."
});
};
Utils.notifySuccess = function(options) {
notify({
type: "success",
- text: options.content || "Error occurred."
+ text: _.escape(options.content) || "Error occurred."
});
};
Utils.defaultErrorHandler = function(model, error) {
@@ -243,7 +243,7 @@ define(['require', 'utils/Globals', 'pnotify'], function(require, Globals, pnoti
if (value == "TaxonomyTerm") {
return {}
}
- var name = value.split('.');
+ var name = _.escape(value).split('.');
return {
term: true,
tag: false,
@@ -261,7 +261,7 @@ define(['require', 'utils/Globals', 'pnotify'], function(require, Globals, pnoti
if (name === "TaxonomyTerm") {
return {}
}
- name = name.split('.');
+ name = _.escape(name).split('.');
var trem = false;
if (value['taxonomy.namespace']) {
trem = true;
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/views/audit/AuditTableLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/audit/AuditTableLayoutView.js b/dashboardv2/public/js/views/audit/AuditTableLayoutView.js
index 2665d4c..9f42e4a 100644
--- a/dashboardv2/public/js/views/audit/AuditTableLayoutView.js
+++ b/dashboardv2/public/js/views/audit/AuditTableLayoutView.js
@@ -58,7 +58,7 @@ define(['require',
* @constructs
*/
initialize: function(options) {
- _.extend(this, _.pick(options, 'globalVent', 'guid'));
+ _.extend(this, _.pick(options, 'globalVent', 'guid', 'vent'));
this.entityCollection = new VEntityList();
this.count = 26;
this.entityCollection.url = UrlLinks.entityCollectionaudit(this.guid);
@@ -79,6 +79,7 @@ define(['require',
paginatorOpts: {}
};
this.currPage = 1;
+ this.bindEvents();
// this.pageFrom = 1;
// this.pageTo = this.count;
},
@@ -91,6 +92,17 @@ define(['require',
});
this.renderTableLayoutView();
},
+ bindEvents: function() {
+ var that = this;
+ this.listenTo(this.vent, "reset:collection", function() {
+ this.fetchCollection({
+ next: this.ui.nextAuditData,
+ nextClick: false,
+ previous: this.ui.previousAuditData
+ });
+ }, this);
+
+ },
getToOffset: function() {
var toOffset = 0;
if (this.entityCollection.models.length < this.count) {
@@ -141,7 +153,6 @@ define(['require',
if ((that.entityCollection.models.length < that.count && that.currPage == 1) && that.next == that.entityCollection.last().get('eventKey')) {
options.next.attr('disabled', true);
options.previous.removeAttr("disabled");
- //that.renderTableLayoutView();
} else {
if (that.entityCollection.models.length > 0) {
that.next = that.entityCollection.last().get('eventKey');
@@ -149,8 +160,9 @@ define(['require',
options.previous.attr('disabled', true);
}
}
- that.renderTableLayoutView();
+
}
+ that.renderTableLayoutView();
},
silent: true
});
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js b/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js
index bc4fbea..76e229d 100644
--- a/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js
+++ b/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js
@@ -70,7 +70,7 @@ define(['require',
var valueObject = detailsObject.values;
if (this.action == Enums.auditAction.TAG_ADD) {
this.ui.auditHeaderValue.html('<th>Tag</th>');
- this.ui.auditValue.html("<tr><td>" + detailsObject.typeName + "</td></tr>");
+ this.ui.auditValue.html("<tr><td>" + _.escape(detailsObject.typeName) + "</td></tr>");
} else {
this.ui.auditHeaderValue.html('<th>Key</th><th>New Value</th>');
table = CommonViewFunction.propertyTable(valueObject, this);
@@ -86,7 +86,7 @@ define(['require',
} else if (this.action == Enums.auditAction.TAG_DELETE) {
var appendedString = this.entityModel.get('details').split(':');
this.ui.auditHeaderValue.html('<th>Tag</th>');
- this.ui.auditValue.html("<tr><td>" + appendedString[1] + "</td></tr>");
+ this.ui.auditValue.html("<tr><td>" + _.escape(appendedString[1]) + "</td></tr>");
}
},
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js b/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js
index 0518578..f709f4d 100644
--- a/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js
+++ b/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js
@@ -104,7 +104,7 @@ define(['require',
}
if (description) {
this.ui.description.show();
- this.ui.description.html('<span>' + description + '</span>');
+ this.ui.description.html('<span>' + _.escape(description) + '</span>');
} else {
this.ui.description.hide();
}
@@ -129,56 +129,6 @@ define(['require',
this.ui.editButton.show();
this.ui.editBox.hide();
},
- addTagCollectionList: function(obj, searchString) {
- var list = "",
- that = this;
- _.each(obj, function(model) {
- var tags = model.get("tags");
- if (!_.contains(that.tagElement, tags)) {
- if (searchString) {
- if (tags.search(new RegExp(searchString, "i")) != -1) {
- list += '<div><span>' + tags + '</span></div>';
- return;
- }
- } else {
- list += '<div><span>' + tags + '</span></div>';
- }
- }
- });
- if (list.length <= 0) {
- list += '<div><span>' + "No more tags" + '</span></div>';
- }
- this.ui.appendList.html(list);
- },
- addTagToTerms: function(tagObject) {
- var tagData = "";
- _.each(tagObject, function(val) {
- tagData += '<span class="inputTag"><span class="inputValue">' + val + '</span><i class="fa fa-close" data-id="deleteTag"></i></span>';
- });
- this.$('.addTag-dropdown').before(tagData);
- },
- saveTagFromList: function(ref) {
- var that = this;
- this.entityModel = new VEntity();
- var tagName = ref.text();
- var json = {
- "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$_Struct",
- "typeName": tagName,
- "values": {}
- };
- this.entityModel.saveEntity(this.id, {
- data: JSON.stringify(json),
- success: function(data) {
- that.collection.fetch({ reset: true });
- },
- error: function(error, data, status) {
- if (error && error.responseText) {
- var data = JSON.parse(error.responseText);
- }
- },
- complete: function() {}
- });
- },
onEditButton: function(e) {
var that = this;
$(e.currentTarget).blur();
@@ -186,7 +136,7 @@ define(['require',
'views/tag/CreateTagLayoutView',
'modules/Modal'
], function(CreateTagLayoutView, Modal) {
- var view = new CreateTagLayoutView({ 'termCollection': that.collection, 'descriptionData': that.model.get('description'), 'tag': that.termName.name });
+ var view = new CreateTagLayoutView({ 'termCollection': that.collection, 'descriptionData': that.model.get('description'), 'tag': _.unescape(that.termName.name) });
var modal = new Modal({
title: 'Edit Term',
content: view,
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/views/business_catalog/BusinessCatalogHeader.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/business_catalog/BusinessCatalogHeader.js b/dashboardv2/public/js/views/business_catalog/BusinessCatalogHeader.js
index 6be1d2d..75ed98c 100644
--- a/dashboardv2/public/js/views/business_catalog/BusinessCatalogHeader.js
+++ b/dashboardv2/public/js/views/business_catalog/BusinessCatalogHeader.js
@@ -41,7 +41,7 @@ define(['require',
var that = this;
$(this.el).html(this.template());
if (Globals.userLogedIn.status) {
- that.$('.userName').html(Globals.userLogedIn.response.userName);
+ that.$('.userName').text(Globals.userLogedIn.response.userName);
}
var that = this;
if (this.url) {
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js b/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
index 5b23966..431a6e7 100644
--- a/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
+++ b/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
@@ -259,11 +259,11 @@ define(['require',
if (isParent) {
this.parentCollection.url = this.url;
this.parentCollection.fullCollection.reset(undefined, { silent: true });
- this.parentCollection.fetch({ reset: true,cache:true });
+ this.parentCollection.fetch({ reset: true, cache: true });
} else {
this.childCollection.url = this.url + "?hierarchy/path:.";
this.childCollection.fullCollection.reset(undefined, { silent: true });
- this.childCollection.fetch({ reset: true });
+ this.childCollection.fetch({ reset: true, cache: true });
}
},
showLoader: function() {
@@ -387,7 +387,7 @@ define(['require',
}
var name = Utils.checkTagOrTerm(model.get('name'), true);
if (name.name) {
- // data-name="<space>'<tagName>'" Space is required for DSL search Input
+ // data-name="<space>'<tagName>'" Space is required for DSL search Input
if (that.viewBased) {
parentLi = '<div class="tools"><i class="fa fa-refresh fa-spin-custom taxanomyloader"></i><i class="fa fa-ellipsis-h termPopover"></i></div><i class="fa fa-angle-right toggleArrow" data-id="expandArrow" data-href="' + hrefUrl + '"></i><a href="javascript:void(0)" data-href="' + hrefUrl + '" data-name="`' + model.get('name') + '`">' + name.name + '</a>';
} else {
@@ -530,7 +530,7 @@ define(['require',
assetName = $(e.target).data("assetname"),
that = this,
modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Delete: " + "<b>" + termName + "?</b></div>" +
+ msg: "<div class='ellipsis'>Delete: " + "<b>" + _.escape(termName) + "?</b></div>" +
"<p class='termNote'>Assets mapped to this term will be unclassified.</p>",
titleMessage: Messages.deleteTerm,
buttonText: "Delete"
@@ -616,7 +616,7 @@ define(['require',
var view = new AddTermLayoutView({
url: UrlLinks.taxonomiesApiUrl(),
model: new that.parentCollection.model(),
- defaultTerm:true
+ defaultTerm: true
});
var modal = new Modal({
title: 'Taxonomy',
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
index 041204f..c34e6f7 100644
--- a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
@@ -113,6 +113,7 @@ define(['require',
initialize: function(options) {
_.extend(this, _.pick(options, 'globalVent', 'collection', 'vent', 'id'));
this.bindEvents();
+ this.auditVent = new Backbone.Wreqr.EventAggregator();
},
bindEvents: function() {
var that = this;
@@ -151,7 +152,7 @@ define(['require',
this.description = collectionJSON.attributes.description;
if (this.name) {
this.ui.title.show();
- var titleName = '<span>' + this.name + '</span>';
+ var titleName = '<span>' + _.escape(this.name) + '</span>';
if (this.readOnly) {
titleName += '<button title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i> Deleted</button>';
}
@@ -161,18 +162,18 @@ define(['require',
}
if (this.description) {
this.ui.description.show();
- this.ui.description.html('<span>' + this.description + '</span>');
+ this.ui.description.html('<span>' + _.escape(this.description) + '</span>');
} else {
this.ui.description.hide();
}
}
if (collectionJSON.classifications) {
this.addTagToTerms(collectionJSON.classifications);
- }else{
- this.addTagToTerms([]);
+ } else {
+ this.addTagToTerms([]);
}
}
-
+ this.auditVent.trigger("reset:collection");
this.renderEntityDetailTableLayoutView();
this.renderTagTableLayoutView(tagGuid);
this.renderTermTableLayoutView(tagGuid);
@@ -199,13 +200,13 @@ define(['require',
that = this;
if (tagOrTerm === "term") {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + this.name + "?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.name + "?</b></div>",
titleMessage: Messages.removeTerm,
buttonText: "Remove"
});
} else if (tagOrTerm === "tag") {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + this.name + "?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.name + "?</b></div>",
titleMessage: Messages.removeTag,
buttonText: "Remove"
});
@@ -344,7 +345,8 @@ define(['require',
require(['views/audit/AuditTableLayoutView'], function(AuditTableLayoutView) {
that.RAuditTableLayoutView.show(new AuditTableLayoutView({
globalVent: that.globalVent,
- guid: tagGuid
+ guid: tagGuid,
+ vent: that.auditVent
}));
});
},
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/views/entity/CreateEntityLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/entity/CreateEntityLayoutView.js b/dashboardv2/public/js/views/entity/CreateEntityLayoutView.js
index a3e0389..c98ea18 100644
--- a/dashboardv2/public/js/views/entity/CreateEntityLayoutView.js
+++ b/dashboardv2/public/js/views/entity/CreateEntityLayoutView.js
@@ -115,7 +115,7 @@ define(['require',
}
}
}).open();
- var enable = false;
+ this.modal.$el.find('button.ok').attr("disabled", true);
this.ui.entityList.val("");
$(this.ui.entityInputData).on('keyup change dp.change', that.modal.$el.find('input select textarea'), function(e) {
that.ui.entityInputData.find("input,select,textarea").each(function() {
@@ -176,7 +176,7 @@ define(['require',
value;
if (this.guid) {
this.collection.each(function(val) {
- name += val.get("attributes").name || val.get("attributes").qualifiedName || val.get("attributes").id;
+ name += _.escape(val.get("attributes").name) || _.escape(val.get("attributes").qualifiedName) || _.escape(val.get("attributes").id);
that.entityData = val;
});
this.ui.assetName.html(name);
@@ -187,7 +187,7 @@ define(['require',
return model.get('name');
}
this.collection.fullCollection.sort().each(function(val) {
- str += '<option>' + val.get("name") + '</option>';
+ str += '<option>' + _.escape(val.get("name")) + '</option>';
});
this.ui.entityList.html(str);
}
@@ -208,6 +208,7 @@ define(['require',
},
onEntityChange: function(e, value) {
+ this.modal.$el.find('button.ok').prop("disabled", false);
var that = this,
typeName;
this.showLoader();
@@ -464,6 +465,7 @@ define(['require',
}
} else {
if (that.selectStoreCollection.length && pickKey) {
+
var temp = {} // I9 support;
temp[pickKey] = $(this).val();
var parseData = that.selectStoreCollection.findWhere(temp).toJSON();
@@ -554,7 +556,7 @@ define(['require',
} else if (value.get("id")) {
labelName = "id";
}
- str += '<option>' + value.get(labelName) + '</option>';
+ str += '<option>' + _.escape(value.get(labelName)) + '</option>';
});
}
}
@@ -591,7 +593,7 @@ define(['require',
var dataValue = that.entityData.get("attributes")[keyData];
if (dataValue !== null) {
_.each(dataValue, function(obj) {
- str += '<option>' + obj + '</option>';
+ str += '<option>' + _.escape(obj) + '</option>';
});
$this.html(str);
}
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/views/schema/SchemaLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/schema/SchemaLayoutView.js b/dashboardv2/public/js/views/schema/SchemaLayoutView.js
index 21ab40c..8d7dfe4 100644
--- a/dashboardv2/public/js/views/schema/SchemaLayoutView.js
+++ b/dashboardv2/public/js/views/schema/SchemaLayoutView.js
@@ -414,13 +414,13 @@ define(['require',
that = this;
if (tagOrTerm === "term") {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
titleMessage: Messages.removeTerm,
buttonText: "Remove"
});
} else if (tagOrTerm === "tag") {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
titleMessage: Messages.removeTag,
buttonText: "Remove"
});
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/views/search/SearchLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/search/SearchLayoutView.js b/dashboardv2/public/js/views/search/SearchLayoutView.js
index 2dd2549..38bf6b5 100644
--- a/dashboardv2/public/js/views/search/SearchLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchLayoutView.js
@@ -124,7 +124,7 @@ define(['require',
return model.get('name').toLowerCase();
}
this.typecollection.fullCollection.sort().each(function(model) {
- str += '<option>' + model.get("name") + '</option>';
+ str += '<option>' + _.escape(model.get("name")) + '</option>';
});
that.ui.typeLov.html(str);
},
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/views/search/SearchResultLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/search/SearchResultLayoutView.js b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
index ded4e38..71dcb8b 100644
--- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
@@ -269,7 +269,7 @@ define(['require',
if (that.searchCollection.models.length) {
that.startRenderTableProcess();
}
- var resultData = 'Results for <b>' + that.searchCollection.queryParams.query + '</b>';
+ var resultData = 'Results for <b>' + _.escape(that.searchCollection.queryParams.query) + '</b>';
var multiAssignDataTag = '<a href="javascript:void(0)" class="inputAssignTag multiSelectTag assignTag" style="display:none" data-id="addAssignTag"><i class="fa fa-plus"></i>' + " " + 'Assign Tag</a>';
if (Globals.taxonomy) {
var multiAssignDataTerm = '<a href="javascript:void(0)" class="inputAssignTag multiSelect" style="display:none" data-id="addTerm"><i class="fa fa-folder-o"></i>' + " " + 'Assign Term</a>';
@@ -279,7 +279,8 @@ define(['require',
}
},
- silent: true
+ silent: true,
+ reset: true
});
},
startRenderTableProcess: function() {
@@ -444,13 +445,13 @@ define(['require',
}
}
if (model.get('$id$')) {
- nameHtml = '<a href="#!/detailPage/' + (model.get('$id$').id || model.get('$id$')) + '">' + rawValue + '</a>';
+ nameHtml = '<a href="#!/detailPage/' + (model.get('$id$').id || model.get('$id$')) + '">' + _.escape(rawValue) + '</a>';
} else {
- nameHtml = '<a>' + rawValue + '</a>';
+ nameHtml = '<a>' + _.escape(rawValue) + '</a>';
}
if (model.get('$id$') && model.get('$id$').state && Enums.entityStateReadOnly[model.get('$id$').state]) {
nameHtml += '<button type="button" title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i></button>';
- return '<div class="readOnly readOnlyLink">' + nameHtml + '</div>';
+ return '<div class="readOnly readOnlyLink">' + _.escape(nameHtml) + '</div>';
} else {
nameHtml += '<button title="Edit" data-id="editEntityButton" data-giud= "' + (model.get('$id$').id || model.get('$id$')) + '" class="btn btn-atlasAction btn-atlas editBtn"><i class="fa fa-pencil"></i></button>'
return nameHtml;
@@ -488,7 +489,7 @@ define(['require',
nameHtml += '<button type="button" title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i></button>';
return '<div class="readOnly readOnlyLink">' + nameHtml + '</div>';
} else {
- nameHtml += '<button title="Edit" data-giud= "' +(model.get('$id$').id || model.get('$id$')) + '" class="btn btn-atlasAction btn-atlas editBtn"><i class="fa fa-pencil"></i></button>'
+ nameHtml += '<button title="Edit" data-giud= "' + (model.get('$id$').id || model.get('$id$')) + '" class="btn btn-atlasAction btn-atlas editBtn"><i class="fa fa-pencil"></i></button>'
return nameHtml;
}
}
@@ -619,13 +620,13 @@ define(['require',
that = this;
if (tagOrTerm === "term") {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
titleMessage: Messages.removeTerm,
buttonText: "Remove"
});
} else if (tagOrTerm === "tag") {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
titleMessage: Messages.removeTag,
buttonText: "Remove"
});
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/CreateTagLayoutView.js b/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
index bf8f88d..3179276 100644
--- a/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
+++ b/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
@@ -87,7 +87,7 @@ define(['require',
if (this.create) {
this.tagCollectionList();
} else {
- this.ui.title.html('<span>' + this.tag + '</span>');
+ this.ui.title.html('<span>' + _.escape(this.tag) + '</span>');
}
if (!('placeholder' in HTMLInputElement.prototype)) {
this.ui.createTagForm.find('input,textarea').placeholder();
@@ -98,7 +98,7 @@ define(['require',
that = this;
this.ui.parentTag.empty();
this.tagCollection.fullCollection.each(function(val) {
- str += '<option>' + val.get("name") + '</option>';
+ str += '<option>' + _.escape(val.get("name")) + '</option>';
});
that.ui.parentTag.html(str);
console.log(platform);
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js b/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
index 6c3cfe4..b72d84b 100644
--- a/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
@@ -46,6 +46,7 @@ define(['require',
addTagListBtn: '[data-id="addTagListBtn"]',
addTagtext: '[data-id="addTagtext"]',
addTagPlus: '[data-id="addTagPlus"]',
+ addTagBtn: '[data-id="addTagBtn"]',
description: '[data-id="description"]',
descriptionTextArea: '[data-id="descriptionTextArea"]',
publishButton: '[data-id="publishButton"]'
@@ -69,13 +70,29 @@ define(['require',
bindEvents: function() {
this.listenTo(this.collection, 'reset', function() {
this.model = this.collection.fullCollection.findWhere({ name: this.tag });
- this.renderTagDetail();
+ /// this.model = this.collection.fullCollection.findWhere({ typeName: $(".dataTypeSelector").val() });
+ if (this.model) {
+ this.renderTagDetail();
+ } else {
+ this.ui.addTagBtn.hide();
+ this.ui.editButton.hide();
+ Utils.notifyError({
+ content: 'Something went wrong'
+ });
+ }
+
}, this);
this.listenTo(this.tagCollection, 'error', function(error, response) {
+ this.ui.addTagBtn.hide();
+ this.ui.editButton.hide();
if (response.responseJSON && response.responseJSON.error) {
Utils.notifyError({
content: response.responseJSON.error
});
+ } else {
+ Utils.notifyError({
+ content: 'Something went wrong'
+ });
}
}, this);
@@ -93,17 +110,17 @@ define(['require',
var attributeData = "",
attributeDefs = this.model.get("attributeDefs");
if (this.model.get("name")) {
- this.ui.title.html('<span>' + this.model.get("name") + '</span>');
+ this.ui.title.html('<span>' + _.escape(this.model.get("name")) + '</span>');
}
if (this.model.get("description")) {
- this.ui.description.html(this.model.get("description"));
+ this.ui.description.text(this.model.get("description"));
}
if (this.model.get("attributeDefs")) {
if (!_.isArray(attributeDefs)) {
attributeDefs = [attributeDefs];
}
_.each(attributeDefs, function(value, key) {
- attributeData += '<span class="inputAttribute">' + value.name + '</span>';
+ attributeData += '<span class="inputAttribute">' + _.escape(value.name) + '</span>';
});
this.ui.showAttribute.html(attributeData);
}
@@ -190,11 +207,11 @@ define(['require',
this.ui.editButton.show();
this.ui.editBox.hide();
},
- textAreaChangeEvent: function(view, modal) {
+ textAreaChangeEvent: function(view) {
if (this.model.get('description') === view.ui.description.val()) {
- modal.$el.find('button.ok').prop('disabled', true);
+ this.modal.$el.find('button.ok').prop('disabled', true);
} else {
- modal.$el.find('button.ok').prop('disabled', false);
+ this.modal.$el.find('button.ok').prop('disabled', false);
}
},
onPublishClick: function(view) {
@@ -210,7 +227,7 @@ define(['require',
'modules/Modal'
], function(CreateTagLayoutView, Modal) {
var view = new CreateTagLayoutView({ 'tagCollection': that.collection, 'model': that.model, 'tag': that.tag });
- var modal = new Modal({
+ that.modal = new Modal({
title: 'Edit Tag',
content: view,
cancelText: "Cancel",
@@ -218,14 +235,14 @@ define(['require',
allowCancel: true,
}).open();
view.ui.description.on('keyup', function(e) {
- that.textAreaChangeEvent(view, modal);
+ that.textAreaChangeEvent(view);
});
- modal.$el.find('button.ok').prop('disabled', true);
- modal.on('ok', function() {
+ that.modal.$el.find('button.ok').prop('disabled', true);
+ that.modal.on('ok', function() {
that.onPublishClick(view);
});
- modal.on('closeModal', function() {
- modal.trigger('cancel');
+ that.modal.on('closeModal', function() {
+ that.modal.trigger('cancel');
});
});
}
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js b/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
index 06cc8b1..c02600e 100644
--- a/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
@@ -136,7 +136,7 @@ define(['require',
var stringArr = [];
tagValue = "";
_.each(values, function(val, key) {
- var attrName = "<span>" + key + ":" + val + "</span>";
+ var attrName = "<span>" + _.escape(key) + ":" + _.escape(val) + "</span>";
stringArr.push(attrName);
});
tagValue += stringArr.join(", ");
@@ -178,13 +178,13 @@ define(['require',
that = this;
if (that.term) {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + this.assetName + "?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.assetName + "?</b></div>",
titleMessage: Messages.removeTerm,
buttonText: "Remove",
});
} else {
var modal = CommonViewFunction.deleteTagModel({
- msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + this.assetName + "?</b></div>",
+ msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.assetName + "?</b></div>",
titleMessage: Messages.removeTag,
buttonText: "Remove",
});
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/views/tag/TagLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/TagLayoutView.js b/dashboardv2/public/js/views/tag/TagLayoutView.js
index 6997658..0ac3745 100644
--- a/dashboardv2/public/js/views/tag/TagLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagLayoutView.js
@@ -147,15 +147,16 @@ define(['require',
return model.get('name').toLowerCase();
};
that.collection.fullCollection.sort().each(function(model) {
+ var name = _.escape(model.get('name'))
if (searchString) {
- if (model.get('name').search(new RegExp(searchString, "i")) != -1) {
+ if (name.search(new RegExp(searchString, "i")) != -1) {
// data-name="<space>'<tagName>'" Space is required for DSL search Input
- str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + model.get('name') + '" data-name="`' + model.get('name') + '`" >' + model.get('name') + '</a></li>';
+ str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + name + '" data-name=" `' + name + '`" >' + name + '</a></li>';
} else {
return;
}
} else {
- str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + model.get('name') + '" data-name="`' + model.get('name') + '`">' + model.get('name') + '</a></li>';
+ str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + name + '" data-name=" `' + name + '`">' + name + '</a></li>';
}
});
this.ui.tagsParent.empty().html(str);
@@ -187,7 +188,7 @@ define(['require',
modal.$el.find('button.ok').removeAttr("disabled");
});
view.ui.tagName.on('keyup', function(e) {
- if (e.keyCode == 8 && e.currentTarget.value == "") {
+ if ((e.keyCode == 8 || e.keyCode == 32 || e.keyCode == 46) && e.currentTarget.value == "") {
modal.$el.find('button.ok').attr("disabled", "true");
}
});
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/590b38ac/dashboardv2/public/js/views/tag/addTagModalView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/addTagModalView.js b/dashboardv2/public/js/views/tag/addTagModalView.js
index 206d826..649cad5 100644
--- a/dashboardv2/public/js/views/tag/addTagModalView.js
+++ b/dashboardv2/public/js/views/tag/addTagModalView.js
@@ -57,6 +57,7 @@ define(['require',
cancelText: "Cancel",
allowCancel: true,
}).open();
+ this.modal.$el.find('button.ok').attr("disabled", true);
this.on('ok', function() {
var tagName = this.ui.addTagOptions.val();
var tagAttributes = {};
@@ -103,11 +104,11 @@ define(['require',
this.tagsCollection();
}, this);
this.listenTo(this.commonCollection, 'reset', function() {
- --this.asyncAttrFetchCounter;
+ --this.asyncAttrFetchCounter
this.subAttributeData();
}, this);
this.listenTo(this.commonCollection, 'error', function() {
- --this.asyncAttrFetchCounter;
+ --this.asyncAttrFetchCounter
this.$('.attrLoader').hide();
}, this);
},
@@ -118,17 +119,17 @@ define(['require',
var str = '<option selected="selected" disabled="disabled">-- Select a tag from the dropdown list --</option>';
this.collection.fullCollection.sort().each(function(obj, key) {
- str += '<option>' + obj.get('name') + '</option>';
+ str += '<option>' + _.escape(obj.get('name')) + '</option>';
});
this.ui.addTagOptions.html(str);
this.ui.addTagOptions.select2({
placeholder: "Select Tag",
- allowClear: true
+ allowClear: false
});
},
onChangeTagDefination: function() {
this.ui.tagAttribute.empty();
- var saveBtn = this.modal.$el.find('.btn-success');
+ var saveBtn = this.modal.$el.find('button.ok');
saveBtn.prop("disabled", false);
var tagname = this.ui.addTagOptions.val();
this.hideAttributeBox();
@@ -157,7 +158,7 @@ define(['require',
if (this.commonCollection.models[0]) {
if (this.commonCollection.models[0].get('attributeDefs')) {
_.each(this.commonCollection.models[0].get('attributeDefs'), function(obj) {
- that.ui.tagAttribute.append('<div class="form-group"><label>' + obj.name + '</label>' +
+ that.ui.tagAttribute.append('<div class="form-group"><label>' + _.escape(obj.name) + '</label>' +
'<input type="text" class="form-control attributeInputVal attrName" data-key="' + obj.name + '" ></input></div>');
});
}