[ADD] automatic save of o2m rows being created/edited when clicking/focusing outside

bzr revid: xmo@openerp.com-20120614123731-x2owyp4nc1yi1ocj
This commit is contained in:
Xavier Morel 2012-06-14 14:37:31 +02:00
parent acfff868cb
commit 055edd7790
1 changed files with 38 additions and 0 deletions

View File

@ -2555,6 +2555,11 @@ openerp.web.form.One2ManyDataSet = openerp.web.BufferedDataSet.extend({
openerp.web.form.One2ManyListView = openerp.web.ListView.extend({
_template: 'One2Many.listview',
init: function (parent, dataset, view_id, options) {
this._super(parent, dataset, view_id, _.extend(options || {}, {
ListType: openerp.web.form.One2ManyList
}));
},
is_valid: function () {
var form;
// A list not being edited is always valid
@ -2657,6 +2662,39 @@ openerp.web.form.One2ManyListView = openerp.web.ListView.extend({
return this._super(name, id, _.bind(def.resolve, def));
}
});
openerp.web.form.One2ManyList = openerp.web.ListView.List.extend({
render_row_as_form: function () {
var self = this;
return this._super.apply(this, arguments).then(function () {
self.setup_save_on_row_blur();
});
},
bind_blur_focus: function (new_row, onblur, onfocus) {
if (new_row.addEventListener) {
new_row.addEventListener('blur', onblur, true);
new_row.addEventListener('focus', onfocus, true);
} else {
new_row.onfocusout = onblur;
new_row.onfocusin = onfocus;
}
},
setup_save_on_row_blur: function () {
var self = this;
var form = this.edition_form;
this.bind_blur_focus(this.edition_form.$element[0], function () {
self._save_row_timeout = setTimeout(function () {
if (form.widget_is_stopped) {
// Saved or cancelled already, maybe?
return;
}
self.view.ensure_saved();
}, 0);
}, function () {
clearTimeout(self._save_row_timeout);
delete self._save_row_timeout;
});
}
});
openerp.web.form.One2ManyFormView = openerp.web.FormView.extend({
form_template: 'One2Many.formview',