[FIX] Fix problem with reference field. Field is not reset when set_value(false)

bzr revid: fme@openerp.com-20111208122851-gd2v732m4105x3bh
This commit is contained in:
Fabien Meghazi 2011-12-08 13:28:51 +01:00
parent 31e245129e
commit 0ce87ab853
1 changed files with 17 additions and 7 deletions

View File

@ -2785,6 +2785,7 @@ openerp.web.form.FieldReference = openerp.web.form.Field.extend({
name: 'selection',
widget: 'selection'
}});
this.reference_ready = true;
this.selection.on_value_changed.add_last(this.on_selection_changed);
this.m2o = new openerp.web.form.FieldMany2One(this, { attrs: {
name: 'm2o',
@ -2794,10 +2795,12 @@ openerp.web.form.FieldReference = openerp.web.form.Field.extend({
on_nop: function() {
},
on_selection_changed: function() {
var sel = this.selection.get_value();
this.m2o.field.relation = sel;
this.m2o.set_value(null);
this.m2o.$element.toggle(sel !== false);
if (this.reference_ready) {
var sel = this.selection.get_value();
this.m2o.field.relation = sel;
this.m2o.set_value(null);
this.m2o.$element.toggle(sel !== false);
}
},
start: function() {
this._super();
@ -2812,11 +2815,18 @@ openerp.web.form.FieldReference = openerp.web.form.Field.extend({
},
set_value: function(value) {
this._super(value);
this.reference_ready = false;
var vals = [], sel_val, m2o_val;
if (typeof(value) === 'string') {
var vals = value.split(',');
this.selection.set_value(vals[0]);
this.m2o.set_value(parseInt(vals[1], 10));
vals = value.split(',');
}
sel_val = vals[0] || false;
m2o_val = vals[1] ? parseInt(vals[1], 10) : false;
this.selection.set_value(sel_val);
this.m2o.field.relation = sel_val;
this.m2o.set_value(m2o_val);
this.m2o.$element.toggle(sel_val !== false);
this.reference_ready = true;
},
get_value: function() {
var model = this.selection.get_value(),