From 7fed8926843d792cdd9a450b51186c2feab5a254 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 31 Mar 2011 14:25:22 +0200 Subject: [ADD] retain currently activated view bzr revid: fme@openerp.com-20110331122522-3v7coio2wpnzsszn --- addons/base/static/src/js/views.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'addons/base/static/src/js/views.js') diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index b0b79c3e5f7..9eabb419151 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -35,12 +35,14 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ this.searchview_id = false; this.searchview = null; this.search_visible = true; + this.active_view = null; // this.views = { "list": { "view_id":1234, "controller": instance} } this.views = {}; }, start: function() { }, on_mode_switch: function(view_type) { + this.active_view = view_type; for (var i in this.views) { this.views[i].controller.$element.toggle(i === view_type); } -- cgit v1.2.3 From 4722165efb3cfaffd4d4f4215d47c1eccc9b8b1a Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 31 Mar 2011 14:25:42 +0200 Subject: [REM] Removed wrong action reference in action manager bzr revid: fme@openerp.com-20110331122542-gnlxfg2unxvlqut8 --- addons/base/static/src/js/views.js | 2 -- 1 file changed, 2 deletions(-) (limited to 'addons/base/static/src/js/views.js') diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 9eabb419151..4fa2e7c2fc9 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -8,7 +8,6 @@ openerp.base.ActionManager = openerp.base.Controller.extend({ // process all kind of actions init: function(session, element_id) { this._super(session, element_id); - this.action = null; this.viewmanager = null; }, /** @@ -17,7 +16,6 @@ openerp.base.ActionManager = openerp.base.Controller.extend({ */ do_action: function(action) { // instantiate the right controllers by understanding the action - this.action = action; if(action.type == "ir.actions.act_window") { this.viewmanager = new openerp.base.ViewManager(this.session,this.element_id); this.viewmanager.do_action_window(action); -- cgit v1.2.3 From 911af887b9665635e6d3b479cffdeb832b04528c Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 31 Mar 2011 14:35:19 +0200 Subject: [IMP] do_action really switch to first view in sequence bzr revid: fme@openerp.com-20110331123519-uk4pkd5azix545ji --- addons/base/static/src/js/views.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/base/static/src/js/views.js') diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 4fa2e7c2fc9..a472ac5e748 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -106,7 +106,7 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ } } // switch to the first one in sequence - this.on_mode_switch("tree"); + this.on_mode_switch(action.views[0][1]); }, // create when root, also add to parent when o2m on_create: function() { -- cgit v1.2.3 From f64b7d3b8c17acc045727afbf1ffdd7fdfcad271 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 31 Mar 2011 15:20:58 +0200 Subject: [IMP] Lazy loading of views bzr revid: fme@openerp.com-20110331132058-w6g87wsxof3kyiqv --- addons/base/static/src/js/views.js | 50 +++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 20 deletions(-) (limited to 'addons/base/static/src/js/views.js') diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index a472ac5e748..164e5d6cf72 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -41,8 +41,31 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ }, on_mode_switch: function(view_type) { this.active_view = view_type; + var view = this.views[view_type]; + if (!view.controller) { + // Lazy loading of views + var controller; + switch (view_type) { + case 'tree': + controller = new openerp.base.ListView(this.session, this.element_id + "_view_tree", this.dataset, view.view_id); + break; + case 'form': + controller = new openerp.base.FormView(this.session, this.element_id + "_view_form", this.dataset, view.view_id); + break; + case 'calendar': + controller = new openerp.base.CalendarView(this.session, this.element_id + "_view_calendar", this.dataset, view.view_id); + break; + case 'gantt': + controller = new openerp.base.GanttView(this.session, this.element_id + "_view_gantt", this.dataset, view.view_id); + break; + } + controller.start(); + this.views[view_type].controller = controller; + } for (var i in this.views) { - this.views[i].controller.$element.toggle(i === view_type); + if (this.views[i].controller) { + this.views[i].controller.$element.toggle(i === view_type); + } } }, /** @@ -86,25 +109,12 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ searchview.do_search); } } - for(var i = 0; i < action.views.length; i++) { - var view_id, controller; - view_id = action.views[i][0]; - if(action.views[i][1] == "tree") { - controller = new openerp.base.ListView(this.session, this.element_id + "_view_tree", this.dataset, view_id); - controller.start(); - this.views.tree = { view_id: view_id, controller: controller }; - this.$element.find(prefix_id + "_button_tree").bind('click',function(){ - self.on_mode_switch("tree"); - }); - } else if(action.views[i][1] == "form") { - controller = new openerp.base.FormView(this.session, this.element_id + "_view_form", this.dataset, view_id); - controller.start(); - this.views.form = { view_id: view_id, controller: controller }; - this.$element.find(prefix_id + "_button_form").bind('click',function(){ - self.on_mode_switch("form"); - }); - } - } + this.$element.find('.views_switchers button').click(function() { + self.on_mode_switch($(this).data('view-type')); + }); + _.each(action.views, function(view) { + self.views[view[1]] = { view_id: view[0], controller: null }; + }); // switch to the first one in sequence this.on_mode_switch(action.views[0][1]); }, -- cgit v1.2.3 From 4d76991c55bc25091cf2941160736e2c9e9139a5 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 31 Mar 2011 16:44:22 +0200 Subject: [FIX] Search is now done by the view and not by the viewmanager bzr revid: fme@openerp.com-20110331144422-34wmf2bauc0lmz7d --- addons/base/static/src/js/views.js | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) (limited to 'addons/base/static/src/js/views.js') diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 164e5d6cf72..5acdd44ae65 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -34,6 +34,7 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ this.searchview = null; this.search_visible = true; this.active_view = null; + this.auto_search = false; // this.views = { "list": { "view_id":1234, "controller": instance} } this.views = {}; }, @@ -61,6 +62,10 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ } controller.start(); this.views[view_type].controller = controller; + if (this.auto_search) { + this.searchview.on_loaded.add_last(this.searchview.do_search); + this.auto_search = false; + } } for (var i in this.views) { if (this.views[i].controller) { @@ -95,19 +100,18 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ this.$element.html(QWeb.render("ViewManager", {"prefix": this.element_id, views: action.views})); this.searchview_id = false; - if(this.search_visible && action.search_view_id) { + if (this.search_visible && action.search_view_id) { this.searchview_id = action.search_view_id[0]; var searchview = this.searchview = new openerp.base.SearchView( this.session, this.element_id + "_search", this.dataset, this.searchview_id, this.search_defaults()); - searchview.on_search.add(this.do_search); + searchview.on_search.add(function() { + self.views[self.active_view].controller.do_search.apply(self, arguments); + }); searchview.start(); - if (action['auto_search']) { - searchview.on_loaded.add_last( - searchview.do_search); - } + this.auto_search = action.auto_search; } this.$element.find('.views_switchers button').click(function() { self.on_mode_switch($(this).data('view-type')); @@ -124,20 +128,6 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ on_remove: function() { }, on_edit: function() { - }, - do_search: function (domains, contexts, groupbys) { - var self = this; - this.rpc('/base/session/eval_domain_and_context', { - domains: domains, - contexts: contexts, - group_by_seq: groupbys - }, function (results) { - // TODO: handle non-empty results.group_by with read_group - self.dataset.set({ - context: results.context, - domain: results.domain - }).fetch(0, self.action.limit); - }); } }); -- cgit v1.2.3