From 96c1dacf4c2fd6b903d2d09697f2b3a21babf64b Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 26 Apr 2011 14:11:46 +0200 Subject: [PATCH] [IMP] m2m now support suppression of elements. bzr revid: nicolas.vanhoren@openerp.com-20110426121146-kq1cuu7i1r0nwfiq --- addons/base/static/src/js/data.js | 2 +- addons/base/static/src/js/form.js | 32 ++++++++++++++++++++++--------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js index bd84f1d7229..6d566f4de0a 100644 --- a/addons/base/static/src/js/data.js +++ b/addons/base/static/src/js/data.js @@ -183,7 +183,7 @@ openerp.base.DataSetSearch = openerp.base.DataSet.extend({ openerp.base.DataSetRelational = openerp.base.DataSet.extend( /** @lends openerp.base.DataSet# */{ }); -openerp.base.DataSetMany2Many = openerp.base.DataSetSearch.extend({ +openerp.base.DataSetMany2Many = openerp.base.DataSetStatic.extend({ /* should extend DataSetStatic instead, but list view still does not support it */ diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 08c4a4fbb74..5e0d739a279 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -902,32 +902,46 @@ openerp.base.form.FieldMany2Many = openerp.base.form.Field.extend({ this._super.apply(this, arguments); this.dataset = new openerp.base.DataSetMany2Many(this.session, this.field.relation); this.list_view = new openerp.base.form.Many2ManyListView(undefined, this.view.session, - this.list_id, this.dataset, false, {'selected': false, 'addable': null, 'deletable': false}); + this.list_id, this.dataset, false, {'selected': false, 'addable': 'Add'}); + var self = this; + this.list_view.do_delete.add_last(function() { + self.on_ui_change(); + }); this.list_view.start(); }, set_value: function(value) { if (value != false) { - // this is not correct behavior, need to change once list view can work with - // static datasets - this.dataset.domain = [["id","in",value]]; - /*this.dataset.ids = value; - this.dataset.count = value.length;*/ + this.dataset.ids = value; + this.dataset.count = value.length; this.list_view.do_reload(); } + }, + get_value: function() { + return [[6,false,this.dataset.ids]]; } }); openerp.base.form.Many2ManyListView = openerp.base.ListView.extend({ do_delete: function (e) { - /* e.stopImmediatePropagation(); var ids = [this.rows[$(e.currentTarget).closest('tr').prevAll().length].data.id.value]; this.dataset.ids = _.without.apply(null, [this.dataset.ids].concat(ids)); this.dataset.count = this.dataset.ids.length; // there may be a faster way this.do_reload(); - */ - } + }, + do_reload: function () { + /* Dear xmo, according to your comments, this method's implementation in list view seems + * to be a little bit bullshit. + * I assume the list view will be changed later, so I hope it will support static datasets. + */ + return this.rpc('/base/listview/fill', { + 'model': this.dataset.model, + 'id': this.view_id, + 'domain': [["id", "in", this.dataset.ids]], + 'context': this.dataset.context + }, this.do_fill_table); + }, }); openerp.base.form.FieldReference = openerp.base.form.Field.extend({