summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorniv-openerp <nicolas.vanhoren@openerp.com>2012-03-27 15:02:54 +0200
committerniv-openerp <nicolas.vanhoren@openerp.com>2012-03-27 15:02:54 +0200
commit4887ac85609e8cb456fa9f4731a8c0cb1cee41bf (patch)
treee5fad45a2b4c62daab516c0c473edc1209f2ea7a /addons/web/static/src
parent6df024535a133fbccd9ca1c2e02a4e0a37e4f694 (diff)
[imp] refactored required modifier
bzr revid: nicolas.vanhoren@openerp.com-20120327130254-gxovlikemx6c10rf
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/view_form.js28
1 files changed, 19 insertions, 9 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index f23c20c23df..8756a587d90 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -1535,7 +1535,7 @@ openerp.web.form.AbstractField = openerp.web.form.Widget.extend(/** @lends opene
this.view.fields_order.push(this.name);
this.type = this.node.attrs.widget;
this.field = this.view.fields_view.fields[this.name] || {};
- this.required = this.modifiers['required'] === true;
+ this.set({required: this.modifiers['required'] === true});
this.invalid = this.dirty = false;
// some events to make the property "effective_readonly" sync automatically with "readonly" and
@@ -1558,6 +1558,18 @@ openerp.web.form.AbstractField = openerp.web.form.Widget.extend(/** @lends opene
if (this.node.attrs.nolabel && openerp.connection.debug) {
this.do_attach_tooltip(this, this.$label || this.$element);
}
+ if (!this.disable_utility_classes) {
+ var set_disabled = function() {
+ this.$element.toggleClass('disabled', this.get("effective_readonly"));
+ };
+ this.on("change:effective_readonly", this, set_disabled);
+ _.bind(set_disabled, this)();
+ var set_required = function() {
+ this.$element.toggleClass('oe_form_required', this.get("required"));
+ };
+ this.on("change:required", this, set_required);
+ _.bind(set_required, this)();
+ }
},
set_value: function(value) {
this.value = value;
@@ -1588,8 +1600,6 @@ openerp.web.form.AbstractField = openerp.web.form.Widget.extend(/** @lends opene
this.$element.find('.oe_field_translate').toggle(!!this.view.datarecord.id);
}
if (!this.disable_utility_classes) {
- this.$element.toggleClass('disabled', this.get("effective_readonly"));
- this.$element.toggleClass('oe_form_required', this.required);
if (show_invalid) {
this.$element.toggleClass('oe_form_invalid', !this.is_valid());
}
@@ -1702,7 +1712,7 @@ openerp.web.form.FieldChar = openerp.web.form.AbstractField.extend(_.extend({},
if (!this.get("effective_readonly")) {
try {
var value = openerp.web.parse_value(this.$element.find('input').val(), this, '');
- this.invalid = this.required && value === '';
+ this.invalid = this.get("required") && value === '';
} catch(e) {
this.invalid = true;
}
@@ -1911,7 +1921,7 @@ openerp.web.form.FieldDatetime = openerp.web.form.AbstractField.extend(_.extend(
validate: function() {
this.invalid = false;
if (!this.get("effective_readonly")) {
- this.invalid = !this.datewidget.is_valid() || (this.required && !this.datewidget.get_value());
+ this.invalid = !this.datewidget.is_valid() || (this.get("required") && !this.datewidget.get_value());
}
},
focus: function($element) {
@@ -1959,7 +1969,7 @@ openerp.web.form.FieldText = openerp.web.form.AbstractField.extend(_.extend({},
if (!this.get("effective_readonly")) {
try {
var value = openerp.web.parse_value(this.$textarea.val(), this, '');
- this.invalid = this.required && value === '';
+ this.invalid = this.get("required") && value === '';
} catch(e) {
this.invalid = true;
}
@@ -2108,7 +2118,7 @@ openerp.web.form.FieldSelection = openerp.web.form.AbstractField.extend(_.extend
return;
}
var value = this.values[this.$element.find('select')[0].selectedIndex];
- this.invalid = !(value && !(this.required && value[0] === false));
+ this.invalid = !(value && !(this.get("required") && value[0] === false));
},
focus: function($element) {
this._super($element || this.$element.find('select:first'));
@@ -2482,7 +2492,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.AbstractField.extend(_.extend(
this.invalid = false;
var val = this.tmp_value !== undefined ? this.tmp_value : this.value;
if (val === null) {
- this.invalid = this.required;
+ this.invalid = this.get("required");
}
},
open_related: function(related) {
@@ -3429,7 +3439,7 @@ openerp.web.form.FieldReference = openerp.web.form.AbstractField.extend(_.extend
this.m2o.start();
},
is_valid: function() {
- return this.required === false || typeof(this.get_value()) === 'string';
+ return this.get("required") === false || typeof(this.get_value()) === 'string';
},
is_dirty: function() {
return this.selection.is_dirty() || this.m2o.is_dirty();