This is an automated email from the ASF dual-hosted git repository. nixon pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/atlas.git
commit 33d72f2d29f79aeb25bdd9cfb1ff1a93ee47bbcb Author: kevalbhatt <[email protected]> AuthorDate: Tue Nov 12 18:19:35 2019 +0530 ATLAS-3521 : UI: Use existing labels from other entities Signed-off-by: nixonrodrigues <[email protected]> (cherry picked from commit 72243644900495436975161bf797bc53f4cf0d0e) --- .../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() {
