summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/basic/basic_controller.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/views/basic/basic_controller.js')
-rw-r--r--addons/web/static/src/js/views/basic/basic_controller.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_controller.js b/addons/web/static/src/js/views/basic/basic_controller.js
index 064f7b84a52..610e7e6dc6b 100644
--- a/addons/web/static/src/js/views/basic/basic_controller.js
+++ b/addons/web/static/src/js/views/basic/basic_controller.js
@@ -19,6 +19,7 @@ var BasicController = AbstractController.extend(FieldManagerMixin, {
custom_events: _.extend({}, AbstractController.prototype.custom_events, FieldManagerMixin.custom_events, {
discard_changes: '_onDiscardChanges',
reload: '_onReload',
+ resequence_records: '_onResequenceRecords',
set_dirty: '_onSetDirty',
sidebar_data_asked: '_onSidebarDataAsked',
translate: '_onTranslate',
@@ -642,6 +643,37 @@ var BasicController = AbstractController.extend(FieldManagerMixin, {
}
},
/**
+ * Resequence records in the given order.
+ *
+ * @private
+ * @param {OdooEvent} ev
+ * @param {string[]} ev.data.recordIds
+ * @param {integer} ev.data.offset
+ * @param {string} ev.data.handleField
+ */
+ _onResequenceRecords: function (ev) {
+ var self = this;
+
+ this.trigger_up('mutexify', {
+ action: function () {
+ var state = self.model.get(self.handle);
+ var resIDs = _.map(ev.data.recordIds, function (recordID) {
+ return _.findWhere(state.data, {id: recordID}).res_id;
+ });
+ var options = {
+ offset: ev.data.offset,
+ field: ev.data.handleField,
+ };
+ return self.model.resequence(self.modelName, resIDs, self.handle, options)
+ .then(function () {
+ self._updateEnv();
+ state = self.model.get(self.handle);
+ return self.renderer.updateState(state, {noRender: true});
+ });
+ },
+ });
+ },
+ /**
* @private
* @param {OdooEvent} ev
*/