summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@odoo.com>2014-06-23 17:48:55 +0200
committerChristophe Matthieu <chm@odoo.com>2014-06-23 17:48:55 +0200
commit176a6aad46063e8eaaa4981c0d59f45150bbf4ff (patch)
treec401dec7173d9aeb6556948b7412fd8f89e06890 /addons/web/static/src
parent9eb3356b16a5d5e365c046d38fbc19d7648fc5f4 (diff)
parentc81708a891c629480e927df7b1206b7c8c46de7c (diff)
merge upstream
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/data.js20
-rw-r--r--addons/web/static/src/js/view_list.js6
2 files changed, 26 insertions, 0 deletions
diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js
index 6819634655d..f580d282516 100644
--- a/addons/web/static/src/js/data.js
+++ b/addons/web/static/src/js/data.js
@@ -21,6 +21,17 @@ instance.web.serialize_sort = function (criterion) {
}).join(', ');
};
+/**
+ * Reverse of the serialize_sort function: convert an array of SQL-like sort
+ * descriptors into a list of fields prefixed with '-' if necessary.
+ */
+ instance.web.deserialize_sort = function (criterion) {
+ return _.map(criterion, function (criteria) {
+ var split = _.without(criteria.split(' '), '');
+ return (split[1] && split[1].toLowerCase() === 'desc' ? '-' : '') + split[0];
+ });
+};
+
instance.web.Query = instance.web.Class.extend({
init: function (model, fields) {
this._model = model;
@@ -685,6 +696,15 @@ instance.web.DataSet = instance.web.Class.extend(instance.web.PropertiesMixin,
this._sort.unshift((reverse ? '-' : '') + field);
return undefined;
},
+ /**
+ * Set the sort criteria on the dataset.
+ *
+ * @param {Array} fields_list: list of fields order descriptors, as used by
+ * Odoo's ORM (such as 'name desc', 'product_id', 'order_date asc')
+ */
+ set_sort: function (fields_list) {
+ this._sort = instance.web.deserialize_sort(fields_list);
+ },
size: function () {
return this.ids.length;
},
diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js
index 16d0310ab4d..6bea2bbe4ad 100644
--- a/addons/web/static/src/js/view_list.js
+++ b/addons/web/static/src/js/view_list.js
@@ -354,6 +354,12 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
this.sidebar.$el.hide();
}
//Sort
+ var default_order = this.fields_view.arch.attrs.default_order,
+ unsorted = !this.dataset._sort.length;
+ if (unsorted && default_order) {
+ this.dataset.set_sort(default_order.split(','));
+ }
+
if(this.dataset._sort.length){
if(this.dataset._sort[0].indexOf('-') == -1){
this.$el.find('th[data-id=' + this.dataset._sort[0] + ']').addClass("sortdown");