summaryrefslogtreecommitdiff
path: root/addons/web/static
diff options
context:
space:
mode:
authorniv-openerp <nicolas.vanhoren@openerp.com>2012-04-18 13:50:04 +0200
committerniv-openerp <nicolas.vanhoren@openerp.com>2012-04-18 13:50:04 +0200
commit29d48867ab89e6067fb34b97522095c334040766 (patch)
tree8df2c4bb816b211a22aaf43edd25d7daf6270eec /addons/web/static
parente4063efdf27324d91ad2d1a33f042e0c2b192af8 (diff)
[imp] changed the way validity is tested
bzr revid: nicolas.vanhoren@openerp.com-20120418115004-otz3xocucky9u5gl
Diffstat (limited to 'addons/web/static')
-rw-r--r--addons/web/static/src/js/view_form.js47
1 files changed, 17 insertions, 30 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index 3cda7bf1b4c..fedc602b4b1 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -247,7 +247,7 @@ instance.web.FormView = instance.web.View.extend({
}
_(this.fields).each(function (field, f) {
- field.reset();
+ field._dirty_flag = false;
var result = field.set_value(self.datarecord[f] || false);
set_values.push(result);
});
@@ -258,7 +258,7 @@ instance.web.FormView = instance.web.View.extend({
_.each(self.fields_order, function(field_name) {
if (record[field_name] !== undefined) {
var field = self.fields[field_name];
- field.dirty = true;
+ field._dirty_flag = true;
self.do_onchange(field);
}
});
@@ -469,7 +469,7 @@ instance.web.FormView = instance.web.View.extend({
var value_ = result.value[f];
if (field.get_value() != value_) {
field.set_value(value_);
- field.dirty = true;
+ field._dirty_flag = true;
if (!_.contains(processed, field.name)) {
this.do_onchange(field, processed);
}
@@ -615,7 +615,7 @@ instance.web.FormView = instance.web.View.extend({
if (!first_invalid_field) {
first_invalid_field = f;
}
- } else if (f.name !== 'id' && !f.get("readonly") && (!self.datarecord.id || f.is_dirty())) {
+ } else if (f.name !== 'id' && !f.get("readonly") && (!self.datarecord.id || f._dirty_flag)) {
// Special case 'id' field, do not save this field
// on 'create' : save all non readonly fields
// on 'edit' : save non readonly modified fields
@@ -754,7 +754,7 @@ instance.web.FormView = instance.web.View.extend({
},
is_dirty: function() {
return _.any(this.fields, function (value_) {
- return value_.is_dirty();
+ return value_._dirty_flag;
});
},
is_interactible_record: function() {
@@ -854,9 +854,11 @@ instance.web.FormView = instance.web.View.extend({
this.translatable_fields.push(field);
}
field.on('changed_value', this, function() {
- this.do_onchange(field);
- this.on_form_changed(true);
- this.do_notify_change();
+ if (field.is_syntax_valid()) {
+ this.do_onchange(field);
+ this.on_form_changed(true);
+ this.do_notify_change();
+ }
});
},
get_field: function(field_name) {
@@ -1628,7 +1630,11 @@ instance.web.form.FieldInterface = {
* Inform the current object of the id it should use to match a html <label> that exists somewhere in the
* view.
*/
- set_input_id: function(id) {}
+ set_input_id: function(id) {},
+
+ is_valid: function() {},
+ is_syntax_valid: function() {},
+ is_false: function() {},
};
/**
@@ -1654,7 +1660,6 @@ instance.web.form.AbstractField = instance.web.form.Widget.extend(/** @lends ins
this.set({'value': false});
this.field = this.field_manager.get_field(this.name);
this.set({required: this.modifiers['required'] === true});
- this.dirty = false;
// some events to make the property "effective_readonly" sync automatically with "readonly" and
// "force_readonly"
@@ -1709,9 +1714,6 @@ instance.web.form.AbstractField = instance.web.form.Widget.extend(/** @lends ins
is_false: function() {
return this.get('value') === false;
},
- is_dirty: function() {
- return this.dirty && !this.get("effective_readonly");
- },
update_dom: function(show_invalid) {
this._super.apply(this, arguments);
if (this.field.translate) {
@@ -1724,10 +1726,8 @@ instance.web.form.AbstractField = instance.web.form.Widget.extend(/** @lends ins
}
},
_on_ui_change: function() {
- this.dirty = true;
- if (this.is_syntax_valid()) {
- this.trigger('changed_value');
- } else {
+ this.trigger('changed_value');
+ if (! this.is_syntax_valid()) {
this.update_dom(true);
}
},
@@ -1738,9 +1738,6 @@ instance.web.form.AbstractField = instance.web.form.Widget.extend(/** @lends ins
}, 50);
}
},
- reset: function() {
- this.dirty = false;
- },
get_definition_options: function() {
if (!this.definition_options) {
var str = this.node.attrs.options || '{}';
@@ -2115,9 +2112,6 @@ instance.web.form.FieldText = instance.web.form.AbstractField.extend(_.extend({}
$div.remove();
$input.height(new_height);
},
- reset: function() {
- this.resized = false;
- }
}));
instance.web.form.FieldBoolean = instance.web.form.AbstractField.extend({
@@ -2893,10 +2887,6 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({
}
return true;
},
- is_dirty: function() {
- this.save_any_view();
- return this._super();
- }
});
instance.web.form.One2ManyDataSet = instance.web.BufferedDataSet.extend({
@@ -3528,9 +3518,6 @@ instance.web.form.FieldReference = instance.web.form.AbstractField.extend(_.exte
is_false: function() {
return typeof(this.get_value()) !== 'string';
},
- is_dirty: function() {
- return this.selection.is_dirty() || this.m2o.is_dirty();
- },
set_value: function(value_) {
this._super(value_);
this.render_value();