summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/basic
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/views/basic')
-rw-r--r--addons/web/static/src/js/views/basic/basic_view.js65
1 files changed, 38 insertions, 27 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_view.js b/addons/web/static/src/js/views/basic/basic_view.js
index ad15931c6c6..22900e12d6b 100644
--- a/addons/web/static/src/js/views/basic/basic_view.js
+++ b/addons/web/static/src/js/views/basic/basic_view.js
@@ -276,33 +276,7 @@ var BasicView = AbstractView.extend({
attrs.mode = mode;
if (mode in attrs.views) {
var view = attrs.views[mode];
- var defaultOrder = view.arch.attrs.default_order;
- if (defaultOrder) {
- // process the default_order, which is like 'name,id desc'
- // but we need it like [{name: 'name', asc: true}, {name: 'id', asc: false}]
- attrs.orderedBy = _.map(defaultOrder.split(','), function (order) {
- order = order.trim().split(' ');
- return {name: order[0], asc: order[1] !== 'desc'};
- });
- } else {
- // if there is a field with widget `handle`, the x2many
- // needs to be ordered by this field to correctly display
- // the records
- var handleField = _.find(view.arch.children, function (child) {
- return child.attrs && child.attrs.widget === 'handle';
- });
- if (handleField) {
- attrs.orderedBy = [{name: handleField.attrs.name, asc: true}];
- }
- }
-
- attrs.columnInvisibleFields = {};
- _.each(view.arch.children, function (child) {
- if (child.attrs && child.attrs.modifiers) {
- attrs.columnInvisibleFields[child.attrs.name] =
- child.attrs.modifiers.column_invisible || false;
- }
- });
+ this._processSubViewAttrs(view, attrs);
}
}
if (attrs.Widget.prototype.fieldsToFetch) {
@@ -398,6 +372,43 @@ var BasicView = AbstractView.extend({
}
return node.tag !== 'arch';
},
+ /**
+ * Processes in place the subview attributes (in particular,
+ * `default_order``and `column_invisible`).
+ *
+ * @private
+ * @param {Object} view - the field subview
+ * @param {Object} attrs - the field attributes (from the xml)
+ */
+ _processSubViewAttrs: function (view, attrs) {
+ var defaultOrder = view.arch.attrs.default_order;
+ if (defaultOrder) {
+ // process the default_order, which is like 'name,id desc'
+ // but we need it like [{name: 'name', asc: true}, {name: 'id', asc: false}]
+ attrs.orderedBy = _.map(defaultOrder.split(','), function (order) {
+ order = order.trim().split(' ');
+ return {name: order[0], asc: order[1] !== 'desc'};
+ });
+ } else {
+ // if there is a field with widget `handle`, the x2many
+ // needs to be ordered by this field to correctly display
+ // the records
+ var handleField = _.find(view.arch.children, function (child) {
+ return child.attrs && child.attrs.widget === 'handle';
+ });
+ if (handleField) {
+ attrs.orderedBy = [{name: handleField.attrs.name, asc: true}];
+ }
+ }
+
+ attrs.columnInvisibleFields = {};
+ _.each(view.arch.children, function (child) {
+ if (child.attrs && child.attrs.modifiers) {
+ attrs.columnInvisibleFields[child.attrs.name] =
+ child.attrs.modifiers.column_invisible || false;
+ }
+ });
+ },
});
return BasicView;