ATLAS-1091 : Improvement in DSL search functionality.(kevalbhatt) (cherry picked from commit 38fd4f35845400f454b24cdd1db8e28ad3f84f21)
Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/92988c65 Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/92988c65 Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/92988c65 Branch: refs/heads/0.7-incubating Commit: 92988c6500fcbc441a168046f90f9375175653ba Parents: e800a53 Author: Keval Bhatt <[email protected]> Authored: Thu Aug 4 20:51:24 2016 +0530 Committer: Madhan Neethiraj <[email protected]> Committed: Thu Dec 22 14:46:50 2016 -0800 ---------------------------------------------------------------------- dashboardv2/public/css/scss/main.scss | 4 +- dashboardv2/public/css/scss/override.scss | 60 ++++++- dashboardv2/public/css/scss/tag.scss | 18 +- dashboardv2/public/css/scss/tree.scss | 30 +--- dashboardv2/public/js/collection/VSearchList.js | 18 +- .../business_catalog/TreeLayoutView_tmpl.html | 2 +- .../templates/search/SearchLayoutView_tmpl.html | 18 +- .../js/views/business_catalog/TreeLayoutView.js | 18 +- .../public/js/views/search/SearchLayoutView.js | 163 ++++++++++++------- .../js/views/search/SearchResultLayoutView.js | 67 +++++--- .../public/js/views/tag/CreateTagLayoutView.js | 2 +- release-log.txt | 1 + 12 files changed, 257 insertions(+), 144 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/92988c65/dashboardv2/public/css/scss/main.scss ---------------------------------------------------------------------- diff --git a/dashboardv2/public/css/scss/main.scss b/dashboardv2/public/css/scss/main.scss index cac2e94..f60e547 100644 --- a/dashboardv2/public/css/scss/main.scss +++ b/dashboardv2/public/css/scss/main.scss @@ -25,6 +25,7 @@ $action_gray:#999999; $color_keppel_approx: #37bb9b; $color_gallery_approx: #eee; $gray: #808080; +$dark_gray:#666; $color_tuna_approx: #323544; $color_celeste_approx: #ccc; $color_cornflower_blue_approx: #66afe9; @@ -38,7 +39,7 @@ $color_ironside_gray_approx: #686868; $color_mercury_approx: #e6e6e6; $color_whisper_approx: #f6f7fa; $color_bombay_approx: #b5b9bc; -$red: red; +$red: #f00; //theme color //colors $color_white_lilac_approx: #f6f7fb; @@ -100,7 +101,6 @@ $black_80: rgba(0, 0, 0, 0.8); $color_bright_turquoise_approx: #00ffd0; $color_mountain_mist_approx: #999; $color_suva_gray_approx: #868686; -// $tag_color:#9599a0; $tag_color:#4A90E2; $delete_link:#BB5838; //urls http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/92988c65/dashboardv2/public/css/scss/override.scss ---------------------------------------------------------------------- diff --git a/dashboardv2/public/css/scss/override.scss b/dashboardv2/public/css/scss/override.scss index 7c4ab45..bbcc319 100644 --- a/dashboardv2/public/css/scss/override.scss +++ b/dashboardv2/public/css/scss/override.scss @@ -132,10 +132,49 @@ } } -.select2-container .select2-selection--single { - height: 34px; - .select2-selection__rendered { - padding-left: 12px; +.select2-container { + .select2-selection--single, + .select2-selection--multiple { + min-height: 34px; + .select2-selection__rendered { + padding-left: 12px; + } + } +} + +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: $white; + color: $color_mountain_mist_approx; + border: 1px solid $tag_color; +} + +.select2-container--default .select2-search--inline .select2-search__field { + color: #555; +} + +.typeLOV { + .select2-container--default { + .select2-selection--multiple { + .select2-selection__rendered { + padding-right: 13px; + .select2-selection__choice { + font-size: 14px; + color: $color_mountain_mist_approx; + border: 1px solid $color_mountain_mist_approx; + } + .select2-search__field { + font-size: 14px; + } + } + .select2-selection__clear { + position: absolute; + float: none; + margin: 0px; + right: 4px; + top: 5px; + color: $color_mountain_mist_approx; + } + } } } @@ -182,3 +221,16 @@ .backgrid-paginator ul > .disabled > a:hover { cursor: pointer; } + +.popover-content { + ul { + color: $dark_gray; + padding: 0px 5px; + margin-bottom: 0px; + cursor: pointer; + a { + color: $dark_gray; + padding: 5px; + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/92988c65/dashboardv2/public/css/scss/tag.scss ---------------------------------------------------------------------- diff --git a/dashboardv2/public/css/scss/tag.scss b/dashboardv2/public/css/scss/tag.scss index d291cd3..faae3d1 100644 --- a/dashboardv2/public/css/scss/tag.scss +++ b/dashboardv2/public/css/scss/tag.scss @@ -105,16 +105,6 @@ margin: 15px 0px; } -.select2-container--default .select2-selection--multiple .select2-selection__choice { - background-color: #fff; - color: #9599a0; - border: 1px solid $tag_color; -} - -.select2-container--default .select2-search--inline .select2-search__field { - color: #555; -} - .inputTag { display: inline-block; border: 1px $tag_color solid; @@ -325,6 +315,14 @@ form-control .tagInpput { float: right; } +.multiSelectTag { + float: right; +} + +.inputAssignTag.multiSelectTag { + margin-right: 10px; +} + .popover.popoverTag { display: block; } http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/92988c65/dashboardv2/public/css/scss/tree.scss ---------------------------------------------------------------------- diff --git a/dashboardv2/public/css/scss/tree.scss b/dashboardv2/public/css/scss/tree.scss index 1076d65..29210a0 100644 --- a/dashboardv2/public/css/scss/tree.scss +++ b/dashboardv2/public/css/scss/tree.scss @@ -104,36 +104,12 @@ } } -.termPopoverList { - color: #666; - padding: 0px 5px; - margin-bottom: 0px; - a { - color: #666; - padding: 5px; - } -} - -.termPopover { - cursor: pointer; -} - .termMoveDiv { width: 550px; height: 200px; margin: 10px; } -.tagPopoverList { - color: #666; - padding: 0px 5px; - margin-bottom: 0px; - a { - color: #666; - padding: 5px; - } -} - .toggleArrow { position: absolute; left: 0px; @@ -141,12 +117,12 @@ cursor: pointer; } -.addTermDiable { - border-color: #FF0000 !important; +.addTermDisable { + border-color: $red !important; } .alertTerm { - color: #FF0000 !important; + color: $red !important; } http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/92988c65/dashboardv2/public/js/collection/VSearchList.js ---------------------------------------------------------------------- diff --git a/dashboardv2/public/js/collection/VSearchList.js b/dashboardv2/public/js/collection/VSearchList.js index 22b3e95..bcdecd3 100644 --- a/dashboardv2/public/js/collection/VSearchList.js +++ b/dashboardv2/public/js/collection/VSearchList.js @@ -33,7 +33,23 @@ define(['require', this.modelName = 'VSearch'; this.modelAttrName = 'results'; this.bindErrorEvents(); - } + }, + parseRecords: function(resp, options) { + this.responseData = { + dataType: resp.dataType, + query: resp.query, + queryType: resp.queryType, + requestId: resp.requestId + }; + try { + if (!this.modelAttrName) { + throw new Error("this.modelAttrName not defined for " + this); + } + return _.reject(resp[this.modelAttrName], _.isNull); + } catch (e) { + console.log(e); + } + }, }, //Static Class Members { http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/92988c65/dashboardv2/public/js/templates/business_catalog/TreeLayoutView_tmpl.html ---------------------------------------------------------------------- diff --git a/dashboardv2/public/js/templates/business_catalog/TreeLayoutView_tmpl.html b/dashboardv2/public/js/templates/business_catalog/TreeLayoutView_tmpl.html index a657c1f..4662665 100644 --- a/dashboardv2/public/js/templates/business_catalog/TreeLayoutView_tmpl.html +++ b/dashboardv2/public/js/templates/business_catalog/TreeLayoutView_tmpl.html @@ -20,7 +20,7 @@ <button class="btn btn-atlasAction btn-atlas pull-right" onclick="this.blur();" title="Refresh" data-id="refreshTaxanomy"><i class="fa fa-refresh"></i></button> </div> <div> - <select type="text" class="form-control" data-id="searchTermInput" placeholder="Search term"></select> + <select type="text" class="form-control" data-id="searchTermInput"></select> </div> <div class=""> <ul class="taxonomyTree"> http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/92988c65/dashboardv2/public/js/templates/search/SearchLayoutView_tmpl.html ---------------------------------------------------------------------- diff --git a/dashboardv2/public/js/templates/search/SearchLayoutView_tmpl.html b/dashboardv2/public/js/templates/search/SearchLayoutView_tmpl.html index c6de3ae..3596732 100644 --- a/dashboardv2/public/js/templates/search/SearchLayoutView_tmpl.html +++ b/dashboardv2/public/js/templates/search/SearchLayoutView_tmpl.html @@ -29,18 +29,12 @@ </div> <div class="col-sm-12"> <div class="form-group"> - <input type="text" class="form-control" data-id="searchInput" placeholder="Search using a query string: e.g. sales_fact"> - </div> - <!-- <div data-id="advanceSearchContainer"> - <div class="form-group"> - <select type="text" class="col-md-12 form-control tagListSelect" data-id="tagListInput" multiple></select> - </div> - <div class="form-group"> - <select type="text" class="col-md-12 form-control" data-id="termListInput" multiple></select> + <div class="typeLOV"> + <select data-id="typeLOV"></select> </div> - </div> --> + <input type="text" class="form-control" data-id="searchInput" placeholder="Search using a query string: e.g. sales_fact" style="margin-top: 5px;"> + </div> <div class="clearAdvanceSearch" data-id="clearSearch">Clear</div> - <button class="btn btn-atlas advanceSearchBtn" data-id="searchBtn">Search</button> + <button class="btn btn-atlas advanceSearchBtn" data-id="searchBtn" disabled="disabled">Search</button> </div> -</div> -<div id="searchResult"></div> + <div id="searchResult"></div> http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/92988c65/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 616e40f..d9fc621 100644 --- a/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js +++ b/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js @@ -315,11 +315,13 @@ define(['require', termSearchData: function() { var that = this; var str = '<option></option>'; - for (var j = 0; j < this.termCollection.models.length; j++) { - var terms = this.termCollection.models[j].attributes.name; - str += '<option>' + terms + '</option>'; - this.ui.searchTermInput.html(str); + this.termCollection.fullCollection.comparator = function(model) { + return model.get('name'); } + this.termCollection.fullCollection.sort().each(function(model) { + str += '<option>' + model.get('name') + '</option>'; + }); + this.ui.searchTermInput.html(str); // this.ui.searchTermInput.setAttribute('data-href' : that.termCollection.url); this.ui.searchTermInput.select2({ placeholder: "Search Term", @@ -480,11 +482,11 @@ define(['require', view.ui.termName.on('keyup', function() { if (this.value.indexOf(' ') >= 0) { modal.$el.find('button.ok').prop('disabled', true); - view.ui.termName.addClass("addTermDiable"); + view.ui.termName.addClass("addTermDisable"); view.$('.alertTerm').show(); } else { modal.$el.find('button.ok').prop('disabled', false); - view.ui.termName.removeClass("addTermDiable"); + view.ui.termName.removeClass("addTermDisable"); view.$('.alertTerm').hide(); } }); @@ -626,11 +628,11 @@ define(['require', view.ui.termName.on('keyup', function() { if (this.value.indexOf(' ') >= 0) { modal.$el.find('button.ok').prop('disabled', true); - view.ui.termName.addClass("addTermDiable"); + view.ui.termName.addClass("addTermDisable"); view.$('.alertTerm').show(); } else { modal.$el.find('button.ok').prop('disabled', false); - view.ui.termName.removeClass("addTermDiable"); + view.ui.termName.removeClass("addTermDisable"); view.$('.alertTerm').hide(); } }); http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/92988c65/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 625f90d..fc30649 100644 --- a/dashboardv2/public/js/views/search/SearchLayoutView.js +++ b/dashboardv2/public/js/views/search/SearchLayoutView.js @@ -19,10 +19,9 @@ define(['require', 'backbone', 'hbs!tmpl/search/SearchLayoutView_tmpl', - 'collection/VSearchList', + 'collection/VTagList', 'utils/Utils', - 'collection/VTagList' -], function(require, Backbone, SearchLayoutViewTmpl, VSearchList, Utils, VTagList) { +], function(require, Backbone, SearchLayoutViewTmpl, VTagList, Utils) { 'use strict'; var SearchLayoutView = Backbone.Marionette.LayoutView.extend( @@ -37,33 +36,30 @@ define(['require', /** ui selector cache */ ui: { - searchButton: '[data-id="searchButton"]', searchInput: '[data-id="searchInput"]', searchType: 'input[name="queryType"]', - advanceSearch: '[data-id="advanceSearch"]', - tagList: '[data-id="tagList"]', - tagListInput: '[data-id="tagListInput"]', - termListInput: '[data-id="termListInput"]', searchBtn: '[data-id="searchBtn"]', - clearSearch: '[data-id="clearSearch"]' + clearSearch: '[data-id="clearSearch"]', + typeLov: '[data-id="typeLOV"]' }, /** ui events hash */ events: function() { var events = {}, that = this; events["keyup " + this.ui.searchInput] = function(e) { - this.ui.searchBtn.removeAttr("disabled"); var code = e.which; + this.ui.searchBtn.removeAttr("disabled"); if (code == 13) { that.findSearchResult(); } - if (code == 8 && this.ui.searchInput.val() == "") { + if (code == 8 && this.ui.searchInput.val() == "" && this.ui.typeLov.val() == "") { this.ui.searchBtn.attr("disabled", "true"); } }; events["change " + this.ui.searchType] = 'dslFulltextToggle'; events["click " + this.ui.searchBtn] = 'findSearchResult'; events["click " + this.ui.clearSearch] = 'clearSearchData'; + events["change " + this.ui.typeLov] = 'onChangeTypeList'; return events; }, /** @@ -72,44 +68,98 @@ define(['require', */ initialize: function(options) { _.extend(this, _.pick(options, 'globalVent', 'value')); - this.searchCollection = new VSearchList([], { - state: { - firstPage: 0, - pageSize: 10 - } - }); + this.typecollection = new VTagList([], {}); this.type = "fulltext"; + var param = Utils.getUrlState.getQueryParams(); + this.query = { + dsl: { + query: "" + }, + fulltext: { + query: "" + } + }; + this.dsl = false; + if (param && param.query && param.searchType) { + this.query[param.searchType].query = param.query; + } this.bindEvents(); }, bindEvents: function(param) { - this.listenTo(this.searchCollection, "reset", function(value) { - this.renderTree(); + this.listenTo(this.typecollection, "reset", function(value) { + this.renderTypeList(); + this.setValues(); + this.ui.typeLov.select2({ + placeholder: "Search For", + allowClear: true + }); }, this); }, onRender: function() { // array of tags which is coming from url + this.$('.typeLOV').hide(); + this.fetchCollection(); this.ui.searchBtn.attr("disabled", "true"); - this.setValues(); + }, + fetchCollection: function(value) { + $.extend(this.typecollection.queryParams, { type: 'CLASS' }); + this.typecollection.fetch({ reset: true }); }, manualRender: function(paramObj) { this.setValues(paramObj); }, + renderTypeList: function() { + var that = this; + this.ui.typeLov.empty(); + var str = '<option></option>'; + this.typecollection.fullCollection.comparator = function(model) { + return model.get('tags'); + } + this.typecollection.fullCollection.sort().each(function(model) { + str += '<option>' + model.get("tags") + '</option>'; + }); + that.ui.typeLov.html(str); + }, + onChangeTypeList: function(e) { + if (this.ui.typeLov.select2('val') !== "") { + this.ui.searchBtn.removeAttr("disabled"); + } else if (this.ui.searchInput.val() === "") { + this.ui.searchBtn.attr("disabled", "true"); + } + }, setValues: function(paramObj) { - var arr = []; + var arr = [], + that = this; if (paramObj) { this.value = paramObj; } if (this.value) { - if (this.value.query.length) { - // get only search value and append it to input box - this.ui.searchInput.val(this.value.query); - this.ui.searchBtn.removeAttr("disabled"); - } - if (this.value.dslChecked == "true") { + if (this.value.dslChecked == "true" && this.dsl == false) { this.ui.searchType.prop("checked", true).trigger("change"); - } else { + } else if (this.value.dslChecked == "false" && this.dsl == true) { this.ui.searchType.prop("checked", false).trigger("change"); } + if (this.value.query !== undefined) { + // get only search value and append it to input box + if (this.dsl) { + var query = this.value.query.split(" "); + if (query.length > 1) { + var typeList = query.shift(); + } else { + var typeList = ""; + } + if (this.ui.typeLov.data('select2')) { + this.ui.typeLov.val(typeList).trigger('change'); + } else { + this.ui.typeLov.val(typeList); + } + this.ui.searchInput.val(query.join(" ")); + } else { + this.ui.searchInput.val(this.value.query); + } + this.ui.searchBtn.removeAttr("disabled"); + } + } this.bindEvents(arr); }, @@ -117,18 +167,20 @@ define(['require', this.triggerSearch(this.ui.searchInput.val()); }, triggerSearch: function(value) { - if (!this.ui.searchType.is(':checked')) { + if (this.ui.searchType.is(':checked')) { this.type = "dsl"; } else if (!this.ui.searchType.is(':checked')) { this.type = "fulltext"; } - - var advancedSearchValue = value; - this.type = "fulltext"; + if (this.ui.typeLov.select2('val') !== null && this.dsl === true) { + this.query[this.type].query = this.ui.typeLov.select2('val') + ' ' + value; + } else { + this.query[this.type].query = value + } Utils.setUrl({ url: '#!/search/searchResult', urlParams: { - query: advancedSearchValue, + query: this.query[this.type].query, searchType: this.type, dslChecked: this.ui.searchType.is(':checked') }, @@ -139,38 +191,35 @@ define(['require', trigger: true }); }, - fetchCollection: function(value) { - if (value) { - this.searchCollection.url = "/api/atlas/discovery/search/" + this.type; - $.extend(this.searchCollection.queryParams, { 'query': value }); - } - this.searchCollection.fetch({ reset: true }); - }, dslFulltextToggle: function(e) { + var paramQuery = ""; if (e.currentTarget.checked) { this.type = "dsl"; + this.dsl = true; + this.$('.typeLOV').show(); } else { + this.dsl = false; + this.$('.typeLOV').hide(); this.type = "fulltext"; } - if (this.ui.searchInput.val() !== "") { - Utils.setUrl({ - url: '#!/search/searchResult', - urlParams: { - query: this.ui.searchInput.val(), - searchType: this.type, - dslChecked: this.ui.searchType.is(':checked') - }, - updateTabState: function() { - return { searchUrl: this.url, stateChanged: true }; - }, - mergeBrowserUrl: false, - trigger: true - }); - //this.findSearchResult(); - } - this.ui.searchInput.attr("placeholder", this.type == "dsl" ? 'Search using a DSL query: e.g. DataSet where name="sales_fact "' : 'Search using a query string: e.g. sales_fact'); + Utils.setUrl({ + url: '#!/search/searchResult', + urlParams: { + query: this.query[this.type].query, + searchType: this.type, + dslChecked: this.ui.searchType.is(':checked') + }, + updateTabState: function() { + return { searchUrl: this.url, stateChanged: true }; + }, + mergeBrowserUrl: false, + trigger: true + }); + this.ui.searchInput.attr("placeholder", this.type == "dsl" ? 'Optional conditions' : 'Search using a query string: e.g. sales_fact'); }, clearSearchData: function() { + this.query[this.type].query = ""; + this.ui.typeLov.val("").trigger("change"); this.ui.searchInput.val(""); this.ui.searchBtn.attr("disabled", "true"); Utils.setUrl({ http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/92988c65/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 b28328c..6510585 100644 --- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js +++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js @@ -195,9 +195,12 @@ define(['require', }, fetchCollection: function(value) { var that = this; + if (value && (value.query === undefined || value.query === "")) { + return; + } this.$('.fontLoader').show(); this.$('.searchTable').hide(); - that.$('.searchResult').hide(); + this.$('.searchResult').hide(); if (Globals.searchApiCallRef) { Globals.searchApiCallRef.abort(); } @@ -208,7 +211,10 @@ define(['require', $.extend(this.searchCollection.queryParams, { limit: this.limit }); this.offset = 0; } - _.extend(this.searchCollection.queryParams, { 'query': value.query }); + if (Utils.getUrlState.isTagTab()) { + this.searchCollection.url = "/api/atlas/discovery/search/dsl"; + } + _.extend(this.searchCollection.queryParams, { 'query': value.query.trim() }); } Globals.searchApiCallRef = this.searchCollection.fetch({ success: function() { @@ -239,7 +245,7 @@ define(['require', that.checkTableFetch(); that.offset = that.offset - that.limit; if (that.firstFetch) { - that.renderTableLayoutView(); + that.startRenderTableProcess(); } } if (that.firstFetch) { @@ -250,7 +256,7 @@ define(['require', } // checking length for not rendering the table if (that.searchCollection.models.length) { - that.renderTableLayoutView(); + that.startRenderTableProcess(); } var resultData = 'Results for <b>' + that.searchCollection.queryParams.query + '</b>' var multiAssignData = '<a href="javascript:void(0)" class="inputAssignTag multiSelect" style="display:none" data-id="addTerm"><i class="fa fa-folder-o"></i>' + " " + 'Assign Term</a>' @@ -259,11 +265,14 @@ define(['require', silent: true }); }, - renderTableLayoutView: function() { + startRenderTableProcess: function() { + this.getEntityTableColumns(); + }, + renderTableLayoutView: function(col) { var that = this, count = 5; require(['utils/TableLayout'], function(TableLayout) { - var columns = new Backgrid.Columns(that.getEntityTableColumns()); + var columns = new Backgrid.Columns(col); that.REntityTableLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, { globalVent: that.globalVent, columns: columns @@ -295,9 +304,10 @@ define(['require', var responseData = this.searchCollection.responseData; if (this.searchCollection.responseData) { if (responseData.dataType && responseData.dataType.typeName.indexOf('_temp') == -1) { - return this.getFixedDslColumn(); + that.renderTableLayoutView(that.getFixedDslColumn()) } else { - var idFound = false; + var idFound = false, + fetchResultCount = 0; _.each(this.searchCollection.models, function(model) { var modelJSON = model.toJSON(); var guid = ""; @@ -320,26 +330,36 @@ define(['require', }); if (guid.length) { idFound = true; + ++fetchResultCount; model.getEntity(guid, { - async: false, success: function(data) { if (data.definition) { if (data.definition.id && data.definition.values) { - that.searchCollection.get(data.definition.id).set(data.definition.values); - that.searchCollection.get(data.definition.id).set('$id$', data.definition.id); - that.searchCollection.get(data.definition.id).set('$traits$', data.definition.traits); + var id = ""; + if (_.isObject(data.definition.id) && data.definition.id.id) { + id = data.definition.id.id; + } else { + id = data.definition.id; + } + that.searchCollection.get(id).set(data.definition.values); + that.searchCollection.get(id).set('$id$', data.definition.id); + that.searchCollection.get(id).set('$traits$', data.definition.traits); } } + }, error: function(error, data, status) {}, - complete: function() {} + complete: function() { + --fetchResultCount; + if (fetchResultCount === 0) { + that.renderTableLayoutView(that.getFixedDslColumn()) + } + } }); } }); - if (idFound) { - return this.getFixedDslColumn(); - } else { - return this.getDaynamicColumn(); + if (idFound === false) { + that.renderTableLayoutView(this.getDaynamicColumn()) } } } @@ -371,11 +391,16 @@ define(['require', var that = this, nameCheck = 0, col = {}; - this.searchCollection.each(function(model) { - if (model.get('name') || model.get('qualifiedName')) { + for (var i = 0; i < this.searchCollection.models.length; i++) { + var model = this.searchCollection.models[i]; + if (model && (model.get('name') || model.get('qualifiedName'))) { ++nameCheck } - }); + if (model && model.get('$id$') === undefined) { + i = i - 1; + that.searchCollection.remove(model); + } + } if (Globals.taxonomy) { col['Check'] = { name: "selected", @@ -542,7 +567,7 @@ define(['require', var view = new AddTermToEntityLayoutView({ guid: guid, multiple: multiple, - callback: function(termName) { + callback: function() { that.fetchCollection(); that.arr = []; }, http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/92988c65/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 a199b03..426fb74 100644 --- a/dashboardv2/public/js/views/tag/CreateTagLayoutView.js +++ b/dashboardv2/public/js/views/tag/CreateTagLayoutView.js @@ -77,7 +77,7 @@ define(['require', var str = '', that = this; this.ui.parentTag.empty(); - this.tagCollection.each(function(val) { + this.tagCollection.fullCollection.each(function(val) { str += '<option>' + val.get("tags") + '</option>'; }); that.ui.parentTag.html(str); http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/92988c65/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index a8bc7de..56f81ea 100644 --- a/release-log.txt +++ b/release-log.txt @@ -27,6 +27,7 @@ ATLAS-409 Atlas will not import avro tables with schema read from a file (dosset ATLAS-379 Create sqoop and falcon metadata addons (venkatnrangan,bvellanki,sowmyaramesh via shwethags) ALL CHANGES: +ATLAS-1091 Improvement in DSL search functionality. (kevalbhatt) ATLAS-1080 Regression - UI - hive_storagedesc is shown as "undefined" in UI.(kevalbhatt) ATLAS-1089 Storm hook should handle cyclic references in topology object (mneethiraj via sumasai) ATLAS-1086 Build failure in hive-bridge after security fixes in ATLAS-762 (sumasai)
