define([ "require", "backbone", "hbs!tmpl/search/save/SaveSearchView_tmpl", "views/search/save/SaveSearchItemView", "collection/VSearchList", "utils/Utils", "utils/UrlLinks", "utils/CommonViewFunction", "utils/Messages" ], function(require, Backbone, SaveSearchViewTmpl, SaveSearchItemView, VSearchList, Utils, UrlLinks, CommonViewFunction, Messages) { "use strict"; return Backbone.Marionette.CompositeView.extend({ template: SaveSearchViewTmpl, childView: SaveSearchItemView, childViewContainer: "[data-id='itemViewContent']", ui: { saveAs: "[data-id='saveAsBtn']", save: "[data-id='saveBtn']" }, childViewOptions: function() { return { collection: this.collection, typeHeaders: this.typeHeaders, applyValue: this.applyValue, isBasic: this.isBasic, classificationDefCollection: this.classificationDefCollection, entityDefCollection: this.entityDefCollection, fetchFavioriteCollection: this.fetchCollection.bind(this), searchTypeObj: this.searchTypeObj }; }, childEvents: function() { return { "item:clicked": function() { this.ui.save.attr("disabled", !1); } }; }, events: function() { var events = {}; return events["click " + this.ui.saveAs] = "saveAs", events["click " + this.ui.save] = "save", events; }, initialize: function(options) { _.extend(this, _.pick(options, "collection", "value", "searchVent", "typeHeaders", "applyValue", "getValue", "isBasic", "fetchCollection", "classificationDefCollection", "entityDefCollection")), this.searchTypeObj = { searchType: "dsl", dslChecked: "true" }, this.isBasic && (this.searchTypeObj.dslChecked = !1, this.searchTypeObj.searchType = "basic"); }, onRender: function() { this.bindEvents(); }, bindEvents: function() { var that = this; this.listenTo(this.collection, "add reset error remove", function(model, collection) { this.$(".fontLoader-relative").hide(), this.collection && this.collection.length ? this.$(".noFavoriteSearch").hide() : this.$(".noFavoriteSearch").show(); }, this), $("body").on("click", ".saveSearchPopoverList_" + (this.isBasic ? "isBasic" : "isAdvance") + " li", function(e) { that.$(".saveSearchPopover").popover("hide"); var id = $(this).parent("ul").data("id"); that[$(this).find("a").data("fn")]({ model: that.collection.find({ guid: id }) }); }); }, saveAs: function(e) { var value = this.getValue(); value && (value.type || value.tag || value.query || value.term) ? this.callSaveModalLayoutView({ collection: this.collection, getValue: this.getValue, isBasic: this.isBasic }) : Utils.notifyInfo({ content: Messages.search.favoriteSearch.notSelectedSearchFilter }); }, save: function() { var that = this, obj = {}, notifyObj = { modal: !0, html: !0, ok: function(argument) { that.callSaveModalLayoutView({ saveObj: obj, collection: that.collection, getValue: that.getValue, isBasic: that.isBasic }); }, cancel: function(argument) {} }, selectedEl = this.$(".saveSearchList li.active").find("div.item"); obj.name = selectedEl.find("a").text(), obj.guid = selectedEl.data("id"), selectedEl && selectedEl.length ? (notifyObj.text = Messages.search.favoriteSearch.save + " " + _.escape(obj.name) + " ?", Utils.notifyConfirm(notifyObj)) : Utils.notifyInfo({ content: Messages.search.favoriteSearch.notSelectedFavoriteElement }); }, callSaveModalLayoutView: function(options) { require([ "views/search/save/SaveModalLayoutView" ], function(SaveModalLayoutView) { new SaveModalLayoutView(options); }); }, onSearch: function(options) { if (options && options.model) { var searchParameters = options.model.toJSON().searchParameters, params = CommonViewFunction.generateUrlFromSaveSearchObject({ value: { searchParameters: searchParameters, uiParameters: options.model.get("uiParameters") }, classificationDefCollection: this.classificationDefCollection, entityDefCollection: this.entityDefCollection }); Utils.setUrl({ url: "#!/search/searchResult", urlParams: _.extend({}, this.searchTypeObj, params), mergeBrowserUrl: !1, trigger: !0, updateTabState: !0 }); } }, onRename: function(options) { if (options && options.model) { var that = this; require([ "views/search/save/SaveModalLayoutView" ], function(SaveModalLayoutView) { new SaveModalLayoutView({ selectedModel: options.model, collection: that.collection, getValue: that.getValue, isBasic: that.isBasic }); }); } }, onDelete: function(options) { if (options && options.model) { var that = this, notifyObj = { modal: !0, html: !0, text: Messages.conformation.deleteMessage + "" + _.escape(options.model.get("name")) + " ?", ok: function(obj) { that.notificationModal = obj, obj.showButtonLoader(), that.onDeleteNotifyOk(options); }, okCloses: !1, cancel: function(argument) {} }; Utils.notifyConfirm(notifyObj); } }, onDeleteNotifyOk: function(options) { var that = this; options.model.urlRoot = UrlLinks.saveSearchApiUrl(), options.model.destroy({ wait: !0, success: function(model, data) { that.collection && that.collection.remove(model), that.notificationModal.hideButtonLoader(), that.notificationModal.remove(), Utils.notifySuccess({ content: options.model.get("name") + Messages.getAbbreviationMsg(!1, "deleteSuccessMessage") }); } }); } }); });