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