[FIX] Loading problems in m2m.

bzr revid: nicolas.vanhoren@openerp.com-20110510121551-8zob0o2zsvvpgz2c
This commit is contained in:
niv-openerp 2011-05-10 14:15:51 +02:00
parent 9dcb8cfe24
commit af7a53c7f2
1 changed files with 29 additions and 6 deletions

View File

@ -915,6 +915,8 @@ openerp.base.form.FieldMany2Many = openerp.base.form.Field.extend({
this._super(view, node); this._super(view, node);
this.template = "FieldMany2Many"; this.template = "FieldMany2Many";
this.list_id = _.uniqueId("many2many"); this.list_id = _.uniqueId("many2many");
this.is_started = false;
this.is_setted = false;
}, },
start: function() { start: function() {
this._super.apply(this, arguments); this._super.apply(this, arguments);
@ -924,16 +926,30 @@ openerp.base.form.FieldMany2Many = openerp.base.form.Field.extend({
var self = this; var self = this;
this.list_view.m2m_field = this; this.list_view.m2m_field = this;
this.list_view.start(); this.list_view.start();
var hack = {loaded: false};
this.list_view.on_loaded.add_last(function() {
if (! hack.loaded) {
self.is_started = true;
self.check_load();
hack.loaded = true;
}
});
}, },
set_value: function(value) { set_value: function(value) {
if (value != false) { if (value != false) {
this.dataset.ids = value; this.dataset.ids = value;
this.dataset.count = value.length; this.dataset.count = value.length;
this.list_view.do_reload(); this.is_setted = true;
this.check_load();
} }
}, },
get_value: function() { get_value: function() {
return [[6,false,this.dataset.ids]]; return [[6,false,this.dataset.ids]];
},
check_load: function() {
if(this.is_started && this.is_setted) {
this.list_view.do_reload();
}
} }
}); });
@ -1009,10 +1025,6 @@ openerp.base.form.Many2XSelectPopup = openerp.base.BaseWidget.extend({
this._super(); this._super();
this.dataset = new openerp.base.DataSetSearch(this.session, this.model); this.dataset = new openerp.base.DataSetSearch(this.session, this.model);
this.setup_search_view(); 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() { setup_search_view: function() {
var self = this; var self = this;
@ -1036,9 +1048,20 @@ openerp.base.form.Many2XSelectPopup = openerp.base.BaseWidget.extend({
$cbutton.click(function() { $cbutton.click(function() {
self.stop(); self.stop();
}); });
self.view_list = new openerp.base.form.Many2XPopupListView( null, self.session,
self.element_id + "_view_list", self.dataset, false);
self.view_list.popup = self;
self.view_list.do_show();
self.view_list.start();
var tmphack = {"loaded": false};
self.view_list.on_loaded.add_last(function() {
if ( !tmphack.loaded ) {
self.view_list.do_reload();
tmphack.loaded = true;
};
});
}); });
this.searchview.start(); this.searchview.start();
}, },
on_select_element: function(element_id) { on_select_element: function(element_id) {
}, },