You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ni...@apache.org on 2019/11/14 09:06:32 UTC
[atlas] 01/02: ATLAS-3521 : UI: Use existing labels from other
entities
This is an automated email from the ASF dual-hosted git repository.
nixon pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/atlas.git
commit 72243644900495436975161bf797bc53f4cf0d0e
Author: kevalbhatt <kb...@apache.org>
AuthorDate: Tue Nov 12 18:19:35 2019 +0530
ATLAS-3521 : UI: Use existing labels from other entities
Signed-off-by: nixonrodrigues <ni...@apache.org>
---
.../js/views/entity/EntityLabelDefineView.js | 43 ++++++++++++++++++----
.../js/views/entity/EntityLabelDefineView.js | 41 +++++++++++++++++----
2 files changed, 69 insertions(+), 15 deletions(-)
diff --git a/dashboardv2/public/js/views/entity/EntityLabelDefineView.js b/dashboardv2/public/js/views/entity/EntityLabelDefineView.js
index 4f971ab..f45660b 100644
--- a/dashboardv2/public/js/views/entity/EntityLabelDefineView.js
+++ b/dashboardv2/public/js/views/entity/EntityLabelDefineView.js
@@ -23,8 +23,9 @@ define(['require',
'utils/Utils',
'utils/Messages',
'utils/Enums',
+ 'utils/UrlLinks',
'utils/CommonViewFunction',
-], function(require, Backbone, EntityLabelDefineView_tmpl, VEntity, Utils, Messages, Enums, CommonViewFunction) {
+], function(require, Backbone, EntityLabelDefineView_tmpl, VEntity, Utils, Messages, Enums, UrlLinks, CommonViewFunction) {
'use strict';
return Backbone.Marionette.LayoutView.extend({
@@ -72,16 +73,42 @@ define(['require',
return "<option selected > " + label + " </option>";
});
this.ui.addLabelOptions.html(str);
+ var getLabelData = function(data, selectedData) {
+ if (data.suggestions) {
+ return _.map(data.suggestions, function(name, index) {
+ var findValue = _.find(selectedData, { id: name })
+ if (findValue) {
+ return findValue;
+ } else {
+ return {
+ id: name,
+ text: name
+ }
+ }
+ });
+ } else {
+ return []
+ }
+ };
this.ui.addLabelOptions.select2({
placeholder: "Select Label",
allowClear: false,
tags: true,
multiple: true,
- matcher: function(params, data) {
- if (params.term === data.text) {
- return data;
- }
- return null;
+ ajax: {
+ url: UrlLinks.searchApiUrl('suggestions'),
+ dataType: 'json',
+ delay: 250,
+ data: function(params) {
+ return {
+ prefixString: _.escape(params.term), // search term
+ fieldName: '__labels'
+ };
+ },
+ processResults: function(data, params) {
+ return { results: getLabelData(data, this.$element.select2("data")) };
+ },
+ cache: true
},
templateResult: this.formatResultSearch
});
@@ -91,7 +118,7 @@ define(['require',
return state.text;
}
if (!state.element) {
- return $("<span>Add<strong> '" + state.text + "'</strong></span>");
+ return $("<span>Add<strong> '" + _.escape(state.text) + "'</strong></span>");
}
},
onChangeLabelChange: function() {
@@ -116,7 +143,7 @@ define(['require',
type: 'POST',
success: function() {
var msg = entityJson.labels === undefined ? 'addSuccessMessage' : 'editSuccessMessage',
- caption = "One or more label";
+ caption = "One or more label";
if (payload.length === 0) {
msg = 'removeSuccessMessage';
caption = "One or more existing label";
diff --git a/dashboardv3/public/js/views/entity/EntityLabelDefineView.js b/dashboardv3/public/js/views/entity/EntityLabelDefineView.js
index a003d2c..7dd7555 100644
--- a/dashboardv3/public/js/views/entity/EntityLabelDefineView.js
+++ b/dashboardv3/public/js/views/entity/EntityLabelDefineView.js
@@ -23,8 +23,9 @@ define(['require',
'utils/Utils',
'utils/Messages',
'utils/Enums',
+ 'utils/UrlLinks',
'utils/CommonViewFunction',
-], function(require, Backbone, EntityLabelDefineView_tmpl, VEntity, Utils, Messages, Enums, CommonViewFunction) {
+], function(require, Backbone, EntityLabelDefineView_tmpl, VEntity, Utils, Messages, Enums, UrlLinks, CommonViewFunction) {
'use strict';
return Backbone.Marionette.LayoutView.extend({
@@ -72,16 +73,42 @@ define(['require',
return "<option selected > " + label + " </option>";
});
this.ui.addLabelOptions.html(str);
+ var getLabelData = function(data, selectedData) {
+ if (data.suggestions) {
+ return _.map(data.suggestions, function(name, index) {
+ var findValue = _.find(selectedData, { id: name })
+ if (findValue) {
+ return findValue;
+ } else {
+ return {
+ id: name,
+ text: name
+ }
+ }
+ });
+ } else {
+ return []
+ }
+ };
this.ui.addLabelOptions.select2({
placeholder: "Select Label",
allowClear: false,
tags: true,
multiple: true,
- matcher: function(params, data) {
- if (params.term === data.text) {
- return data;
- }
- return null;
+ ajax: {
+ url: UrlLinks.searchApiUrl('suggestions'),
+ dataType: 'json',
+ delay: 250,
+ data: function(params) {
+ return {
+ prefixString: _.escape(params.term), // search term
+ fieldName: '__labels'
+ };
+ },
+ processResults: function(data, params) {
+ return { results: getLabelData(data, this.$element.select2("data")) };
+ },
+ cache: true
},
templateResult: this.formatResultSearch
});
@@ -91,7 +118,7 @@ define(['require',
return state.text;
}
if (!state.element) {
- return $("<span>Add<strong> '" + state.text + "'</strong></span>");
+ return $("<span>Add<strong> '" + _.escape(state.text) + "'</strong></span>");
}
},
onChangeLabelChange: function() {