[IMP] FormView: Only show invalid field on_ui_change and do_save

bzr revid: fme@openerp.com-20120116111431-8zm8883ull42ljgx
This commit is contained in:
Fabien Meghazi 2012-01-16 12:14:31 +01:00
parent 064a50bcde
commit 0618ebfe27
2 changed files with 5 additions and 10 deletions

View File

@ -40,7 +40,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
this.fields = {};
this.fields_order = [];
this.datarecord = {};
this.show_invalid = true;
this.default_focus_field = null;
this.default_focus_button = null;
this.registry = openerp.web.form.widgets;
@ -179,7 +178,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
});
return $.when.apply(null, set_values).pipe(function() {
if (!record.id) {
self.show_invalid = false;
// 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) {
@ -192,7 +190,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
}
self.on_form_changed();
self.is_initialized.resolve();
self.show_invalid = true;
self.do_update_pager(record.id == null);
if (self.sidebar) {
self.sidebar.attachments.do_update();
@ -429,7 +426,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
f = self.fields[f];
if (!f.is_valid()) {
form_invalid = true;
f.update_dom();
f.update_dom(true);
if (!first_invalid_field) {
first_invalid_field = f;
}
@ -1116,7 +1113,7 @@ openerp.web.form.WidgetButton = openerp.web.form.Widget.extend({
});
},
update_dom: function() {
this._super();
this._super.apply(this, arguments);
this.check_disable();
},
check_disable: function() {
@ -1238,7 +1235,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f
get_on_change_value: function() {
return this.get_value();
},
update_dom: function() {
update_dom: function(show_invalid) {
this._super.apply(this, arguments);
if (this.field.translate) {
this.$element.find('.oe_field_translate').toggle(!!this.view.datarecord.id);
@ -1246,7 +1243,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f
if (!this.disable_utility_classes) {
this.$element.toggleClass('disabled', this.readonly);
this.$element.toggleClass('required', this.required);
if (this.view.show_invalid) {
if (show_invalid) {
this.$element.toggleClass('invalid', !this.is_valid());
}
}
@ -1259,7 +1256,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f
this.view.do_onchange(this);
this.view.on_form_changed();
} else {
this.update_dom();
this.update_dom(true);
}
},
validate: function() {

View File

@ -300,7 +300,6 @@ openerp.web_calendar.CalendarView = openerp.web.View.extend({
this.dataset.index = null;
self.creating_event_id = event_id;
this.form_dialog.form.do_show().then(function() {
form.show_invalid = false;
_.each(['date_start', 'date_delay', 'date_stop'], function(field) {
var field_name = self[field];
if (field_name && form.fields[field_name]) {
@ -313,7 +312,6 @@ openerp.web_calendar.CalendarView = openerp.web.View.extend({
});
}
});
form.show_invalid = true;
self.form_dialog.open();
});
},