[REM] FormView: Removed is_dirty_for_user and replaced by calling is_dirty() on fields

bzr revid: fme@openerp.com-20111115145806-hlh19loo03nmy1qx
This commit is contained in:
Fabien Meghazi 2011-11-15 15:58:06 +01:00
parent b72b197cf0
commit 7e9090fde7
1 changed files with 12 additions and 8 deletions

View File

@ -35,7 +35,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
this.fields = {}; this.fields = {};
this.datarecord = {}; this.datarecord = {};
this.show_invalid = true; this.show_invalid = true;
this.dirty_for_user = false;
this.default_focus_field = null; this.default_focus_field = null;
this.default_focus_button = null; this.default_focus_button = null;
this.registry = this.readonly ? openerp.web.form.readonly : openerp.web.form.widgets; this.registry = this.readonly ? openerp.web.form.readonly : openerp.web.form.widgets;
@ -172,7 +171,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
} }
this.$form_header.find('.oe_form_on_readonly').toggle(this.readonly); this.$form_header.find('.oe_form_on_readonly').toggle(this.readonly);
this.$form_header.find('.oe_form_on_editable').toggle(!this.readonly); this.$form_header.find('.oe_form_on_editable').toggle(!this.readonly);
this.dirty_for_user = false;
this.datarecord = record; this.datarecord = record;
for (var f in this.fields) { for (var f in this.fields) {
var field = this.fields[f]; var field = this.fields[f];
@ -317,7 +315,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
processed.push(field.name); processed.push(field.name);
if (field.get_value() != value) { if (field.get_value() != value) {
field.set_value(value); field.set_value(value);
field.dirty = this.dirty_for_user = true; field.dirty = true;
if (_.indexOf(processed, field.name) < 0) { if (_.indexOf(processed, field.name) < 0) {
this.do_onchange(field, processed); this.do_onchange(field, processed);
} }
@ -402,7 +400,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
return def.promise(); return def.promise();
}, },
can_be_discarded: function() { can_be_discarded: function() {
return !this.dirty_for_user || confirm(_t("Warning, the record has been modified, your changes will be discarded.")); return !this.is_dirty() || confirm(_t("Warning, the record has been modified, your changes will be discarded."));
}, },
/** /**
* Triggers saving the form's record. Chooses between creating a new * Triggers saving the form's record. Chooses between creating a new
@ -418,8 +416,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
try { try {
if (!self.initial_mutating_lock.isResolved() && !self.initial_mutating_lock.isRejected()) if (!self.initial_mutating_lock.isResolved() && !self.initial_mutating_lock.isRejected())
return; return;
var form_dirty = false, var form_invalid = false,
form_invalid = false,
values = {}, values = {},
first_invalid_field = null; first_invalid_field = null;
for (var f in self.fields) { for (var f in self.fields) {
@ -431,7 +428,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
first_invalid_field = f; first_invalid_field = f;
} }
} else if (f.is_dirty()) { } else if (f.is_dirty()) {
form_dirty = true;
values[f.name] = f.get_value(); values[f.name] = f.get_value();
} }
} }
@ -553,6 +549,14 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
return self.dataset.parent_view.recursive_save(); return self.dataset.parent_view.recursive_save();
}); });
}, },
is_dirty: function() {
for (var f in this.fields) {
if (this.fields[f].is_dirty()) {
return true;
}
}
return false;
},
is_interactible_record: function() { is_interactible_record: function() {
var id = this.datarecord.id; var id = this.datarecord.id;
if (!id) { if (!id) {
@ -1236,7 +1240,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f
} }
}, },
on_ui_change: function() { on_ui_change: function() {
this.dirty = this.view.dirty_for_user = true; this.dirty = true;
this.validate(); this.validate();
if (this.is_valid()) { if (this.is_valid()) {
this.set_value_from_ui(); this.set_value_from_ui();