[FIX] On new record, FormView shall apply on_changes to fields using same order as defined in view
bzr revid: fme@openerp.com-20111201155029-bi4zjgvwkt7gjapy
This commit is contained in:
parent
14d5e1df2d
commit
06e9cc9fb5
|
@ -33,6 +33,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
|||
this.widgets = {};
|
||||
this.widgets_counter = 0;
|
||||
this.fields = {};
|
||||
this.fields_order = [];
|
||||
this.datarecord = {};
|
||||
this.show_invalid = true;
|
||||
this.default_focus_field = null;
|
||||
|
@ -86,6 +87,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
|||
on_loaded: function(data) {
|
||||
var self = this;
|
||||
if (data) {
|
||||
this.fields_order = [];
|
||||
this.fields_view = data;
|
||||
var frame = new (this.registry.get_object('frame'))(this, this.fields_view.arch);
|
||||
|
||||
|
@ -122,6 +124,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
|||
self.translatable_fields = [];
|
||||
self.widgets = {};
|
||||
self.fields = {};
|
||||
self.fields_order = [];
|
||||
self.$form_header.find('button').unbind('click');
|
||||
self.readonly = !self.readonly;
|
||||
self.registry = self.readonly ? openerp.web.form.readonly : openerp.web.form.widgets;
|
||||
|
@ -188,15 +191,16 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
|||
deferred_stack.push('force resolution if no fields');
|
||||
return deferred_stack.then(function() {
|
||||
if (!record.id) {
|
||||
// New record: Second pass in order to trigger the onchanges
|
||||
self.show_invalid = false;
|
||||
for (var f in record) {
|
||||
var field = self.fields[f];
|
||||
if (field) {
|
||||
// New record: Second pass in order to trigger the onchanges
|
||||
// respecting the fields order defined in the view
|
||||
_.each(self.fields_order, function(field_name) {
|
||||
if (record[field_name] !== undefined) {
|
||||
var field = self.fields[field_name];
|
||||
field.dirty = true;
|
||||
self.do_onchange(field);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
self.on_form_changed();
|
||||
self.initial_mutating_lock.resolve();
|
||||
|
@ -1219,6 +1223,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f
|
|||
this.name = node.attrs.name;
|
||||
this.value = undefined;
|
||||
view.fields[this.name] = this;
|
||||
view.fields_order.push(this.name);
|
||||
this.type = node.attrs.widget || view.fields_view.fields[node.attrs.name].type;
|
||||
this.element_name = "field_" + this.name + "_" + this.type;
|
||||
|
||||
|
@ -2830,6 +2835,7 @@ openerp.web.form.FieldReference = openerp.web.form.Field.extend({
|
|||
this.view_id = 'reference_' + _.uniqueId();
|
||||
this.widgets = {};
|
||||
this.fields = {};
|
||||
this.fields_order = [];
|
||||
this.selection = new openerp.web.form.FieldSelection(this, { attrs: {
|
||||
name: 'selection',
|
||||
widget: 'selection'
|
||||
|
|
Loading…
Reference in New Issue