[FIX] issue with searchview appearing alongside non-searchable views (e.g. form) when they're the primary (initially loaded) view for an action

bzr revid: xmo@openerp.com-20110913063238-hki65oukviah8u2k
This commit is contained in:
Xavier Morel
2011-09-13 08:32:38 +02:00
parent 9e3fe8e471
commit 625c933bf6
+36 -23
View File
@@ -266,7 +266,7 @@ openerp.web.ViewManager = openerp.web.Widget.extend(/** @lends openerp.web.View
/**
* Sets up the current viewmanager's search view.
*
* @param view_id the view to use or false for a default one
* @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) {
@@ -274,10 +274,10 @@ openerp.web.ViewManager = openerp.web.Widget.extend(/** @lends openerp.web.View
if (this.searchview) {
this.searchview.stop();
}
this.searchview = new openerp.web.SearchView(this, this.element_id + "_search", this.dataset, view_id, search_defaults);
if (this.flags.search_view === false) {
this.searchview.hide();
}
this.searchview = new openerp.web.SearchView(
this, this.element_id + "_search", this.dataset,
view_id, search_defaults);
this.searchview.on_search.add(function(domains, contexts, groupbys) {
var controller = self.views[self.active_view].controller;
controller.do_search.call(controller, domains, contexts, groupbys);
@@ -297,8 +297,15 @@ openerp.web.ViewManager = openerp.web.Widget.extend(/** @lends openerp.web.View
}
});
openerp.web.ViewManagerAction = openerp.web.ViewManager.extend({
openerp.web.ViewManagerAction = openerp.web.ViewManager.extend(/** @lends oepnerp.web.ViewManagerAction# */{
template: "ViewManagerAction",
/**
* @constructs openerp.web.ViewManagerAction
* @extends openerp.web.ViewManager
*
* @param {openerp.web.ActionManager} parent parent object/widget
* @param {Object} action descriptor for the action this viewmanager needs to manage its views.
*/
init: function(parent, action) {
this.session = parent.session;
this.action = action;
@@ -315,29 +322,35 @@ openerp.web.ViewManagerAction = openerp.web.ViewManager.extend({
this.flags.search_view = this.flags.pager = this.flags.sidebar = this.flags.action_buttons = false;
}
},
/**
* Initializes the ViewManagerAction: sets up the searchview (if the
* searchview is enabled in the manager's action flags), calls into the
* parent to initialize the primary view and (if the VMA has a searchview)
* launches an initial search after both views are done rendering.
*/
start: function() {
var inital_view_loaded = this._super();
var search_defaults = {};
_.each(this.action.context, function (value, key) {
var match = /^search_default_(.*)$/.exec(key);
if (match) {
search_defaults[match[1]] = value;
}
});
var searchview_loaded;
if (this.flags.search_view !== false) {
var search_defaults = {};
_.each(this.action.context, function (value, key) {
var match = /^search_default_(.*)$/.exec(key);
if (match) {
search_defaults[match[1]] = value;
}
});
// init search view
var searchview_id = this.action.search_view_id && this.action.search_view_id[0];
var searchview_id = this.action['search_view_id'] && this.action['search_view_id'][0];
var searchview_loaded = this.setup_search_view(
searchview_loaded = this.setup_search_view(
searchview_id || false, search_defaults);
}
// schedule auto_search
if (searchview_loaded != null && this.action['auto_search']) {
$.when(searchview_loaded, inital_view_loaded)
.then(this.searchview.do_search);
}
var main_view_loaded = this._super();
// schedule auto_search
if (searchview_loaded && this.action['auto_search']) {
$.when(searchview_loaded, main_view_loaded)
.then(this.searchview.do_search);
}
},
on_mode_switch: function (view_type) {