123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- define([ "require", "backbone", "utils/Globals", "hbs!tmpl/search/SearchDefaultLayoutView_tmpl", "utils/Utils", "utils/CommonViewFunction", "utils/Enums" ], function(require, Backbone, Globals, SearchDefaultLayoutViewTmpl, Utils, CommonViewFunction, Enums) {
- "use strict";
- var SearchDefaultlLayoutView = Backbone.Marionette.LayoutView.extend({
- _viewName: "SearchDefaultlLayoutView",
- template: SearchDefaultLayoutViewTmpl,
- regions: {
- RGlobalSearchLayoutView: "#r_globalSearchLayoutView",
- RSearchResultLayoutView: "#r_searchResultLayoutView",
- RQueryBuilderEntity: "#r_attributeQueryBuilderEntity",
- RQueryBuilderClassification: "#r_attributeQueryBuilderClassification"
- },
- ui: {
- resizable: '[data-id="resizable"]',
- attrFilter: "[data-id='attrFilter']",
- attrApply: "[data-id='attrApply']",
- attrClose: "[data-id='attrClose']",
- entityRegion: "[data-id='entityRegion']",
- classificationRegion: "[data-id='classificationRegion']",
- checkDeletedEntity: "[data-id='checkDeletedEntity']",
- checkSubClassification: "[data-id='checkSubClassification']",
- checkSubType: "[data-id='checkSubType']",
- entityName: ".entityName",
- classificationName: ".classificationName",
- createNewEntity: '[data-id="createNewEntity"]',
- clearQuerySearch: "[data-id='clearQuerySearch']",
- refreshSearchQuery: "[data-id='refreshSearchResult']"
- },
- events: function() {
- var events = {}, that = this;
- return events["click " + this.ui.attrFilter] = function(e) {
- this.$(".attribute-filter-container").hasClass("hide") ? (this.onClickAttrFilter(),
- this.$(".attributeResultContainer").addClass("overlay")) : this.$(".attributeResultContainer").removeClass("overlay"),
- this.$(".fa-angle-right").toggleClass("fa-angle-down"), this.$(".attribute-filter-container, .attr-filter-overlay").toggleClass("hide");
- }, events["click " + this.ui.refreshSearchQuery] = function(e) {
- this.options.searchVent.trigger("search:refresh");
- }, events["click " + this.ui.attrApply] = function(e) {
- that.okAttrFilterButton(e);
- }, events["click " + this.ui.attrClose] = function(e) {
- this.$(".attributeResultContainer").removeClass("overlay"), this.$(".fa-angle-right").toggleClass("fa-angle-down"),
- this.$(".attribute-filter-container, .attr-filter-overlay").toggleClass("hide");
- }, events["click .clear-attr"] = function(e) {
- var type = $(e.currentTarget).data("type"), that = this;
- switch (type) {
- case "entityFilters":
- that.filtersQueryUpdate(e, !1);
- break;
- case "tagFilters":
- that.filtersQueryUpdate(e, !0);
- break;
- default:
- this.options.value[type] = null;
- }
- this.searchAttrFilter();
- }, events["click " + this.ui.clearQuerySearch] = function(e) {
- var notifyObj = {
- modal: !0,
- ok: function(argument) {
- Utils.setUrl({
- url: "#!/search",
- mergeBrowserUrl: !1,
- trigger: !0,
- updateTabState: !0
- });
- },
- cancel: function(argument) {}
- };
- notifyObj.text = "Search parameters will be reset and you will return to the default search page. Continue?",
- Utils.notifyConfirm(notifyObj);
- }, events["click " + this.ui.createNewEntity] = "onCreateNewEntity", events["click " + this.ui.checkDeletedEntity] = "onCheckExcludeIncludeResult",
- events["click " + this.ui.checkSubClassification] = "onCheckExcludeIncludeResult",
- events["click " + this.ui.checkSubType] = "onCheckExcludeIncludeResult", events;
- },
- templateHelpers: function() {
- return {
- entityCreate: Globals.entityCreate
- };
- },
- initialize: function(options) {
- _.extend(this.options, options), this.hidenFilter = !1, this.tagAttributeLength = 0,
- this.entityAttributeLength = 0, this.tagEntityCheck = !1, this.typeEntityCheck = !1;
- },
- bindEvents: function() {},
- onRender: function() {
- this.toggleLayoutClass = this.$(".col-sm-9.f-right, .col-sm-12.f-right"), this.renderGlobalSearch(),
- this.renderSearchResult(), this.updateView(), this.ui.entityRegion.hide(), this.ui.classificationRegion.hide();
- },
- filtersQueryUpdate: function(e, isTag) {
- var filters = CommonViewFunction.attributeFilter.extractUrl({
- value: isTag ? this.options.value.tagFilters : this.options.value.entityFilters,
- formatDate: !0
- }), rules = filters.rules, filtertype = isTag ? "tagFilters" : "entityFilters", that = this;
- filters.rules = _.filter(rules, function(obj, key) {
- return obj.id + key != $(e.currentTarget).data("id");
- }), filters && that.updateFilterOptions(filters, filtertype, isTag), 0 == filters.rules.length && (isTag ? this.options.searchTableFilters.tagFilters[that.options.value.tag] = "" : this.options.searchTableFilters.entityFilters[that.options.value.type] = "");
- },
- onCheckExcludeIncludeResult: function(e) {
- var flag = !1, val = $(e.currentTarget).attr("data-value");
- e.target.checked && (flag = !0), this.options.value && (this.options.value[val] = flag);
- },
- onCreateNewEntity: function(e) {
- var that = this;
- require([ "views/entity/CreateEntityLayoutView" ], function(CreateEntityLayoutView) {
- new CreateEntityLayoutView({
- entityDefCollection: that.options.entityDefCollection,
- typeHeaders: that.options.typeHeaders,
- searchVent: that.options.searchVent,
- callback: function() {}
- });
- });
- },
- updateView: function() {
- this.options.fromSearchResultView ? (this.$('.search-container,[data-id="createEntity"]').hide(),
- $("body").removeClass("ui-autocomplete-small-height"), this.$(".searchResultContainer,.attributeResultContainer").show()) : (this.$('.search-container,[data-id="createEntity"]').show(),
- $("body").addClass("ui-autocomplete-small-height"), this.$(".searchResultContainer,.attributeResultContainer").hide());
- },
- manualRender: function(options) {
- _.extend(this.options, options), this.updateView(), this.onClickAttrFilter(), this.renderSearchResult();
- },
- renderGlobalSearch: function() {
- var that = this;
- require([ "views/search/GlobalSearchLayoutView" ], function(GlobalSearchLayoutView) {
- that.RGlobalSearchLayoutView.show(new GlobalSearchLayoutView(_.extend({
- closeOnSubmit: !0
- }, _.omit(that.options, "value"))));
- });
- },
- renderSearchResult: function() {
- var that = this;
- require([ "views/search/SearchResultLayoutView" ], function(SearchResultLayoutView) {
- that.RSearchResultLayoutView.show(new SearchResultLayoutView(that.options));
- });
- },
- checkEntityFilter: function(options) {
- return options && options.value && (options.value.type && options.value.entityFilters && (options.searchTableFilters.entityFilters[options.value.type] = options.value.entityFilters),
- options.value.tag && options.value.tagFilters && (options.searchTableFilters.tagFilters[options.value.tag] = options.value.tagFilters)),
- options.searchTableFilters;
- },
- onClickAttrFilter: function() {
- var that = this, obj = {
- value: that.options.value,
- searchVent: that.options.searchVent,
- entityDefCollection: that.options.entityDefCollection,
- enumDefCollection: that.options.enumDefCollection,
- typeHeaders: that.options.typeHeaders,
- classificationDefCollection: that.options.classificationDefCollection,
- businessMetadataDefCollection: that.options.businessMetadataDefCollection,
- searchTableFilters: that.checkEntityFilter(that.options)
- };
- if (this.tagEntityCheck = !1, this.typeEntityCheck = !1, that.options.value) {
- if (this.ui.checkDeletedEntity.prop("checked", !!this.options.value.includeDE && this.options.value.includeDE),
- this.ui.checkSubClassification.prop("checked", !!this.options.value.excludeSC && this.options.value.excludeSC),
- this.ui.checkSubType.prop("checked", !!this.options.value.excludeST && this.options.value.excludeST),
- that.options.value.tag && that.options.value.type ? (this.$(".attribute-filter-container").removeClass("no-attr"),
- this.ui.classificationRegion.show(), this.ui.entityRegion.show()) : (that.options.value.tag || that.options.value.type || this.$(".attribute-filter-container").addClass("no-attr"),
- this.ui.entityRegion.hide(), this.ui.classificationRegion.hide()), that.options.value.tag) {
- this.ui.classificationRegion.show();
- var attrTagObj = that.options.classificationDefCollection.fullCollection.find({
- name: that.options.value.tag
- });
- attrTagObj && (attrTagObj = Utils.getNestedSuperTypeObj({
- data: attrTagObj.toJSON(),
- collection: that.options.classificationDefCollection,
- attrMerge: !0
- }), this.tagAttributeLength = attrTagObj.length), (Globals[that.options.value.tag] || Globals[Enums.addOnClassification[0]]) && (obj.systemAttrArr = (Globals[that.options.value.tag] || Globals[Enums.addOnClassification[0]]).attributeDefs,
- this.tagAttributeLength = obj.systemAttrArr.length), this.renderQueryBuilder(_.extend({}, obj, {
- tag: !0,
- type: !1,
- attrObj: attrTagObj
- }), this.RQueryBuilderClassification), this.ui.classificationName.html(that.options.value.tag);
- }
- if (that.options.value.type) {
- this.ui.entityRegion.show();
- var attrTypeObj = that.options.entityDefCollection.fullCollection.find({
- name: that.options.value.type
- });
- attrTypeObj && (attrTypeObj = Utils.getNestedSuperTypeObj({
- data: attrTypeObj.toJSON(),
- collection: that.options.entityDefCollection,
- attrMerge: !0
- }), this.entityAttributeLength = attrTypeObj.length), (Globals[that.options.value.type] || Globals[Enums.addOnEntities[0]]) && (obj.systemAttrArr = (Globals[that.options.value.type] || Globals[Enums.addOnEntities[0]]).attributeDefs,
- this.entityAttributeLength = obj.systemAttrArr.length), this.renderQueryBuilder(_.extend({}, obj, {
- tag: !1,
- type: !0,
- attrObj: attrTypeObj
- }), this.RQueryBuilderEntity), this.ui.entityName.html(_.escape(that.options.value.type));
- }
- }
- },
- okAttrFilterButton: function(e) {
- function searchAttribute() {
- var queryBuilderObj = queryBuilderRef.data("queryBuilder");
- if (queryBuilderObj) {
- var ruleWithInvalid = queryBuilderObj.getRules({
- allow_invalid: !0
- }), rule = queryBuilderObj.getRules();
- if (rule ? that.updateFilterOptions(rule, filtertype, isTag) : isFilterValidate = !1,
- ruleWithInvalid && 1 === ruleWithInvalid.rules.length && null === ruleWithInvalid.rules[0].id && (isFilterValidate = !0,
- queryBuilderObj.clearErrors()), rule && rule.rules) {
- if (!that.tagEntityCheck) {
- var state = _.find(rule.rules, {
- id: "__state"
- });
- state && (that.typeEntityCheck = !("ACTIVE" === state.value && "=" === state.operator || "DELETED" === state.value && "!=" === state.operator),
- that.options.value.includeDE = that.typeEntityCheck);
- }
- if (!that.typeEntityCheck) {
- var entityStatus = _.find(rule.rules, {
- id: "__entityStatus"
- });
- entityStatus && (that.tagEntityCheck = !("ACTIVE" === entityStatus.value && "=" === entityStatus.operator || "DELETED" === entityStatus.value && "!=" === entityStatus.operator),
- that.options.value.includeDE = that.tagEntityCheck);
- }
- }
- }
- }
- function filterPopupStatus() {
- isFilterValidate && $(e.currentTarget).hasClass("search") && (that.$(".fa-angle-right").toggleClass("fa-angle-down"),
- that.$(".attribute-filter-container, .attr-filter-overlay").toggleClass("hide"),
- that.searchAttrFilter(), that.$(".attributeResultContainer").removeClass("overlay"));
- }
- var isTag, filtertype, queryBuilderRef, isFilterValidate = !0, that = this;
- this.options.value.tag && (isTag = !0, filtertype = isTag ? "tagFilters" : "entityFilters",
- 0 !== this.tagAttributeLength && (queryBuilderRef = this.RQueryBuilderClassification.currentView.ui.builder,
- searchAttribute())), this.options.value.type && (isTag = !1, filtertype = isTag ? "tagFilters" : "entityFilters",
- 0 !== this.entityAttributeLength && (queryBuilderRef = this.RQueryBuilderEntity.currentView.ui.builder,
- searchAttribute())), filterPopupStatus();
- },
- getIdFromRuleObj: function(rule) {
- var that = this, col = new Set();
- return _.map(rule.rules, function(obj, key) {
- return _.has(obj, "condition") ? that.getIdFromRuleObj(obj) : col.add(obj.id);
- }), Array.from(col);
- },
- updateFilterOptions: function(rule, filtertype, isTag) {
- var ruleUrl = CommonViewFunction.attributeFilter.generateUrl({
- value: rule,
- formatedDateToLong: !0
- });
- this.options.searchTableFilters[filtertype][isTag ? this.options.value.tag : this.options.value.type] = ruleUrl,
- !isTag && this.options.value && this.options.value.type && this.options.searchTableColumns && (this.options.searchTableColumns[this.options.value.type] || (this.options.searchTableColumns[this.options.value.type] = [ "selected", "name", "description", "typeName", "owner", "tag", "term" ]),
- this.options.searchTableColumns[this.options.value.type] = _.sortBy(_.union(_.without(this.options.searchTableColumns[this.options.value.type]), this.getIdFromRuleObj(rule))));
- },
- renderQueryBuilder: function(obj, rQueryBuilder) {
- require([ "views/search/QueryBuilderView" ], function(QueryBuilderView) {
- rQueryBuilder.show(new QueryBuilderView(obj));
- });
- },
- searchAttrFilter: function() {
- var updatedUrl, entityFilterObj = (this.options.value.type || this.options.value.tag,
- this.options.searchTableFilters.entityFilters), tagFilterObj = this.options.searchTableFilters.tagFilters, params = {
- searchType: "basic",
- dslChecked: !1,
- tagFilters: null,
- entityFilters: null,
- query: null,
- type: null,
- tag: null,
- term: null,
- attributes: null,
- pageOffset: null,
- pageLimit: null,
- includeDE: null
- };
- if (this.options.value) {
- this.options.value.tag && (params.tag = this.options.value.tag), this.options.value.type && (params.type = this.options.value.type),
- this.options.value.term && (params.term = this.options.value.term), this.options.value.query && (params.query = this.options.value.query);
- var columnList = this.options.value && this.options.value.type && this.options.searchTableColumns ? this.options.searchTableColumns[this.options.value.type] : null;
- columnList && (params.attributes = columnList.join(",")), params.includeDE = !_.isUndefinedNull(this.options.value.includeDE) && this.options.value.includeDE,
- params.excludeST = !_.isUndefinedNull(this.options.value.excludeST) && this.options.value.excludeST,
- params.excludeSC = !_.isUndefinedNull(this.options.value.excludeSC) && this.options.value.excludeSC;
- }
- entityFilterObj && (params.entityFilters = entityFilterObj[this.options.value.type]),
- tagFilterObj && (params.tagFilters = tagFilterObj[this.options.value.tag]), params.pageOffset = 0,
- this.options.value.tag || this.options.value.type || this.options.value.term || this.options.value.query ? updatedUrl = "#!/search/searchResult" : (params.tag = null,
- params.type = null, params.term = null, params.query = null, params.attributes = null,
- params.includeDE = null, params.excludeST = null, params.excludeSC = null, updatedUrl = "#!/search"),
- Utils.setUrl({
- url: updatedUrl,
- urlParams: _.extend({}, params),
- mergeBrowserUrl: !1,
- trigger: !0,
- updateTabState: !0
- });
- var paramObj = Utils.getUrlState.getQueryParams();
- this.options.value = paramObj;
- }
- });
- return SearchDefaultlLayoutView;
- });
|