diff options
| author | Fabien Meghazi <fme@openerp.com> | 2011-09-14 23:04:45 +0200 |
|---|---|---|
| committer | Fabien Meghazi <fme@openerp.com> | 2011-09-14 23:04:45 +0200 |
| commit | eadb161a38cb9d1bd6065bf2e01f103b8e96017d (patch) | |
| tree | 9b0ca12d51d97660c97f0db023b19ea6650f9af9 /addons/web/static/src | |
| parent | 3ef575744d0b83fbdaa09334d0f217b2ad5065b9 (diff) | |
[IMP] Improved dirty state in form view
bzr revid: fme@openerp.com-20110914210445-ul8aax7g1q5b47c6
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index aecc52c5eef..583f8f38b67 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -35,7 +35,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# this.datarecord = {}; this.ready = false; this.show_invalid = true; - this.dirty = false; + this.dirty_for_user = false; this.default_focus_field = null; this.default_focus_button = null; this.registry = openerp.web.form.widgets; @@ -135,7 +135,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# this.$form_header.find('.oe_form_on_update').show(); this.$form_header.find('button.oe_form_button_new').show(); } - this.dirty = false; + this.dirty_for_user = false; this.datarecord = record; for (var f in this.fields) { var field = this.fields[f]; @@ -145,7 +145,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# } if (!record.id) { // New record: Second pass in order to trigger the onchanges - this.dirty = true; this.show_invalid = false; for (var f in record) { var field = this.fields[f]; @@ -270,7 +269,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# processed.push(field.name); if (field.get_value() != value) { field.set_value(value); - field.dirty = true; + field.dirty = this.dirty_for_user = true; if (_.indexOf(processed, field.name) < 0) { this.do_onchange(field, processed); } @@ -298,10 +297,9 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# var self = this; var def = $.Deferred(); $.when(this.has_been_loaded).then(function() { - self.dataset.default_get( - _.keys(self.fields_view.fields)).then(self.on_record_loaded).then(function() { - def.resolve(); - }); + self.dataset.default_get(_.keys(self.fields_view.fields)).then(self.on_record_loaded).then(function() { + def.resolve(); + }); }); return def.promise(); }, @@ -809,7 +807,7 @@ openerp.web.form.WidgetButton = openerp.web.form.Widget.extend({ }, on_click: function(saved) { var self = this; - if (!this.node.attrs.special && this.view.dirty && saved !== true) { + if ((!this.node.attrs.special && this.view.dirty_for_user && saved !== true) || !this.view.recordcount.id) { this.view.do_save(function() { self.on_click(true); }); @@ -957,7 +955,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f } }, on_ui_change: function() { - this.dirty = this.view.dirty = true; + this.dirty = this.view.dirty_for_user = true; this.validate(); if (this.is_valid()) { this.set_value_from_ui(); |
