diff options
| author | Xavier Morel <xmo@openerp.com> | 2011-12-08 13:38:46 +0100 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2011-12-08 13:38:46 +0100 |
| commit | 54f3f38957fc36fbb705524b99cc2af0b5aceeca (patch) | |
| tree | d057f360bd11328ed5c200c7efeaf6ad6a5416b2 /addons/web/static/src/js/view_list_editable.js | |
| parent | 37dee90724b3d378f51bac26cff500949ce0480d (diff) | |
[IMP] ListView#save_row internals by taking advantage of Deferred#pipe
and FormView#do_save returning a deferred of course.
bzr revid: xmo@openerp.com-20111208123846-dp3cgbsljl41q82k
Diffstat (limited to 'addons/web/static/src/js/view_list_editable.js')
| -rw-r--r-- | addons/web/static/src/js/view_list_editable.js | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 155b183e11f..b2edf55b314 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -303,30 +303,27 @@ openerp.web.list_editable = function (openerp) { save_row: function () { //noinspection JSPotentiallyInvalidConstructorUsage var self = this, done = $.Deferred(); - this.edition_form.do_save(function (result) { - if (result.created && !self.edition_id) { - self.records.add({id: result.result}, - {at: self.options.editable === 'top' ? 0 : null}); - self.edition_id = result.result; - } - var edited_record = self.records.get(self.edition_id); + return this.edition_form + .do_save(null, this.options.editable === 'top') + .pipe(function (result) { + if (result.created && !self.edition_id) { + self.records.add({id: result.result}, + {at: self.options.editable === 'top' ? 0 : null}); + self.edition_id = result.result; + } + var edited_record = self.records.get(self.edition_id); - $.when( - self.handle_onwrite(self.edition_id), - self.cancel_pending_edition().then(function () { - $(self).trigger('saved', [self.dataset]); - })).then(function () { - done.resolve({ - created: result.created || false, - edited_record: edited_record - }); - }, function () { - done.reject(); - }); - }, this.options.editable === 'top').fail(function () { - done.reject(); - }); - return done.promise(); + return $.when( + self.handle_onwrite(self.edition_id), + self.cancel_pending_edition().then(function () { + $(self).trigger('saved', [self.dataset]); + })).pipe(function () { + return { + created: result.created || false, + edited_record: edited_record + }; + }, null); + }, null); }, /** * If the current list is being edited, ensures it's saved |
