summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/services/data_manager.js
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-09-06 17:40:59 +0200
committerChristophe Simonis <chs@odoo.com>2017-09-06 17:40:59 +0200
commitd5382abeaad4d93b8def7e63cd47a86baaba8f0b (patch)
tree6364ff760709b541eebdde4b04494b480dec87fb /addons/web/static/src/js/services/data_manager.js
parentc75fe95dfca366bf6c3b6a51908677039488aa4f (diff)
parentb8dd34fcbb895b8d62f3e133dcf5ee6f40a1400d (diff)
[MERGE] forward port branch saas-17 up to b8dd34fcbb8
Diffstat (limited to 'addons/web/static/src/js/services/data_manager.js')
-rw-r--r--addons/web/static/src/js/services/data_manager.js29
1 files changed, 17 insertions, 12 deletions
diff --git a/addons/web/static/src/js/services/data_manager.js b/addons/web/static/src/js/services/data_manager.js
index 77857ef2d31..105d7f30d69 100644
--- a/addons/web/static/src/js/services/data_manager.js
+++ b/addons/web/static/src/js/services/data_manager.js
@@ -305,18 +305,6 @@ return core.Class.extend({
viewType = viewType === 'tree' ? 'list' : viewType;
innerFieldsView.type = viewType;
attrs.views[viewType] = self._processFieldsView(_.extend({}, innerFieldsView));
-
- // default_order is like:
- // 'name,id desc'
- // but we need it like:
- // [{name: 'id', asc: false}, {name: 'name', asc: true}]
- var defaultOrder = innerFieldsView.arch.attrs.default_order;
- if (defaultOrder) {
- attrs.orderedBy = _.map(defaultOrder.split(','), function (order) {
- order = order.trim().split(' ');
- return {name: order[0], asc: order[1] !== 'desc'};
- });
- }
});
delete field.views;
}
@@ -346,6 +334,23 @@ return core.Class.extend({
}
}
attrs.mode = mode;
+ if (mode in attrs.views) {
+ var view = attrs.views[mode];
+ // process the default_order, which is like 'name,id desc'
+ // but we need it like [{name: 'name', asc: true}, {name: 'id', asc: false}]
+ var defaultOrder = view.arch.attrs.default_order;
+ if (defaultOrder) {
+ attrs.orderedBy = _.map(defaultOrder.split(','), function (order) {
+ order = order.trim().split(' ');
+ return {name: order[0], asc: order[1] !== 'desc'};
+ });
+ }
+ // detect editables list has they behave differently with respect
+ // to the sorting (changes are not sorted directly)
+ if (mode === 'list' && view.arch.attrs.editable) {
+ attrs.keepChangesUnsorted = true;
+ }
+ }
}
if (attrs.Widget.prototype.fieldsToFetch) {
attrs.viewType = 'default';