From a1149a97c6250aca4dfb54a0cf7817f422d5fdae Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 9 May 2011 13:52:33 +0200 Subject: [PATCH] [IMP] Many2x search popup wip. Currently working, need to add possibility to create new object. bzr revid: nicolas.vanhoren@openerp.com-20110509115233-j1j004r9yxlhm63x --- addons/base/static/src/js/form.js | 28 +++++++++++++++++++++++----- addons/base/static/src/xml/base.xml | 1 + 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 33c855af537..37a5683360a 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -964,7 +964,15 @@ openerp.base.form.Many2ManyListView = openerp.base.ListView.extend({ e.stopImmediatePropagation(); var pop = new openerp.base.form.Many2XSelectPopup(null, this.m2m_field.view.session); pop.select_element(this.model); - //TODO niv: add callback + var self = this; + pop.on_select_element.add(function(element_id) { + if(! _.detect(self.dataset.ids, function(x) {return x == element_id;})) { + self.dataset.ids.push(element_id); + self.dataset.count = self.dataset.ids.length; + self.do_reload(); + } + pop.stop(); + }); }, on_select_row: function(event) { var $target = $(event.currentTarget); @@ -998,8 +1006,13 @@ openerp.base.form.Many2XSelectPopup = openerp.base.BaseWidget.extend({ this.start(); }, start: function() { + this._super(); this.dataset = new openerp.base.DataSetSearch(this.session, this.model); this.setup_search_view(); + this.view_list = new openerp.base.form.Many2XPopupListView( null, this.session, + this.element_id + "_view_list", this.dataset, false); + this.view_list.popup = this; + this.view_list.start(); }, setup_search_view: function() { var self = this; @@ -1008,17 +1021,22 @@ openerp.base.form.Many2XSelectPopup = openerp.base.BaseWidget.extend({ } this.searchview = new openerp.base.SearchView(this, this.session, this.element_id + "_search", this.dataset, false, {}); - /*this.searchview.on_search.add(function(domains, contexts, groupbys) { - //TODO niv: do it correctly - self.views[self.active_view].controller.do_search.call( + this.searchview.on_search.add(function(domains, contexts, groupbys) { + self.view_list.do_search.call( self, domains, contexts, groupbys); - });*/ + }); return this.searchview.start(); }, on_select_element: function(element_id) { } }); +openerp.base.form.Many2XPopupListView = openerp.base.ListView.extend({ + switch_to_record: function(index) { + this.popup.on_select_element(this.dataset.ids[index]); + } +}); + openerp.base.form.FieldReference = openerp.base.form.Field.extend({ init: function(view, node) { this._super(view, node); diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index 84528b75e9b..d6c4d3edbb1 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -575,6 +575,7 @@
+