From 3909843bf8507c55c426957339497209f38e502e Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 28 Sep 2011 17:32:54 +0200 Subject: [PATCH] [IMP] Search view can be initialized in ViewManager before start() bzr revid: fme@openerp.com-20110928153254-e0rid4atpho0zf6k --- addons/web/static/src/js/views.js | 63 +++++++++++++++---------------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 6049989c568..ac811b989d3 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -166,6 +166,7 @@ db.web.ViewManager = db.web.Widget.extend(/** @lends db.web.ViewManager# */{ this.model = dataset.model; this.dataset = dataset; this.searchview = null; + this.last_search = false; this.active_view = null; this.views_src = _.map(views, function(x) {return x instanceof Array? {view_id: x[0], view_type: x[1]} : x;}); this.views = {}; @@ -233,9 +234,9 @@ db.web.ViewManager = db.web.Widget.extend(/** @lends db.web.ViewManager# */{ this.views[view_type].controller = controller; } - - if (this.searchview && !this.searchview.hidden) { - this.searchview[view.controller.searchable === false ? 'hide' : 'show'](); + if (this.searchview) { + this.do_searchview_search(); + this.searchview[view.controller.searchable === false || this.searchview.hidden ? 'hide' : 'show'](); } this.$element @@ -255,6 +256,33 @@ db.web.ViewManager = db.web.Widget.extend(/** @lends db.web.ViewManager# */{ } return view_promise; }, + /** + * Sets up the current viewmanager's search view. + * + * @param {Number|false} view_id the view to use or false for a default one + * @returns {jQuery.Deferred} search view startup deferred + */ + setup_search_view: function(view_id, search_defaults) { + var self = this; + if (this.searchview) { + this.searchview.stop(); + } + this.searchview = new db.web.SearchView( + this, this.dataset, + view_id, search_defaults, this.flags.search_view === false); + + this.searchview.on_search.add(this.do_searchview_search); + return this.searchview.appendTo($("#" + this.element_id + "_search")); + }, + do_searchview_search: function(domains, contexts, groupbys) { + if (domains) { + this.last_search = [domains, contexts, groupbys]; + } + if (this.last_search) { + var controller = this.views[this.active_view].controller; + controller.do_search.apply(controller, this.last_search); + } + }, /** * Event launched when a controller has been inited. * @@ -307,7 +335,6 @@ db.web.ViewManagerAction = db.web.ViewManager.extend(/** @lends oepnerp.web.View // buttons, sidebar, ...) displaying this.flags.search_view = this.flags.pager = this.flags.sidebar = this.flags.action_buttons = false; } - this.last_search = false; // setup storage for session-wise menu hiding if (this.session.hidden_menutips) { @@ -382,38 +409,10 @@ db.web.ViewManagerAction = db.web.ViewManager.extend(/** @lends oepnerp.web.View return $.when( this._super(view_type), this.shortcut_check(this.views[view_type])).then(function () { - self.do_searchview_search(); var view_id = self.views[self.active_view].controller.fields_view.view_id; self.$element.find('.oe_get_xml_view span').text(view_id); }); }, - /** - * Sets up the current viewmanager's search view. - * - * @param {Number|false} view_id the view to use or false for a default one - * @returns {jQuery.Deferred} search view startup deferred - */ - setup_search_view: function(view_id, search_defaults) { - var self = this; - if (this.searchview) { - this.searchview.stop(); - } - this.searchview = new db.web.SearchView( - this, this.dataset, - view_id, search_defaults, this.flags.search_view === false); - - this.searchview.on_search.add(this.do_searchview_search); - return this.searchview.appendTo($("#" + this.element_id + "_search")); - }, - do_searchview_search: function(domains, contexts, groupbys) { - if (domains) { - this.last_search = [domains, contexts, groupbys]; - } - if (this.last_search) { - var controller = this.views[this.active_view].controller; - controller.do_search.apply(controller, this.last_search); - } - }, shortcut_check : function(view) { var self = this; var grandparent = this.widget_parent && this.widget_parent.widget_parent;