Merge pull request #520 from odoo-dev/master-default-order-ged
[MERGE] Add support for per-view default order in list/kanban views (task #8527)
This commit is contained in:
commit
5c0804eaef
|
@ -21,6 +21,17 @@ instance.web.serialize_sort = function (criterion) {
|
||||||
}).join(', ');
|
}).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({
|
instance.web.Query = instance.web.Class.extend({
|
||||||
init: function (model, fields) {
|
init: function (model, fields) {
|
||||||
this._model = model;
|
this._model = model;
|
||||||
|
@ -685,6 +696,15 @@ instance.web.DataSet = instance.web.Class.extend(instance.web.PropertiesMixin,
|
||||||
this._sort.unshift((reverse ? '-' : '') + field);
|
this._sort.unshift((reverse ? '-' : '') + field);
|
||||||
return undefined;
|
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 () {
|
size: function () {
|
||||||
return this.ids.length;
|
return this.ids.length;
|
||||||
},
|
},
|
||||||
|
|
|
@ -354,6 +354,12 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
|
||||||
this.sidebar.$el.hide();
|
this.sidebar.$el.hide();
|
||||||
}
|
}
|
||||||
//Sort
|
//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.length){
|
||||||
if(this.dataset._sort[0].indexOf('-') == -1){
|
if(this.dataset._sort[0].indexOf('-') == -1){
|
||||||
this.$el.find('th[data-id=' + this.dataset._sort[0] + ']').addClass("sortdown");
|
this.$el.find('th[data-id=' + this.dataset._sort[0] + ']').addClass("sortdown");
|
||||||
|
|
|
@ -62,6 +62,14 @@ instance.web_kanban.KanbanView = instance.web.View.extend({
|
||||||
},
|
},
|
||||||
load_kanban: function(data) {
|
load_kanban: function(data) {
|
||||||
this.fields_view = data;
|
this.fields_view = data;
|
||||||
|
|
||||||
|
// use default order if defined in xml description
|
||||||
|
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(','));
|
||||||
|
}
|
||||||
|
|
||||||
this.$el.addClass(this.fields_view.arch.attrs['class']);
|
this.$el.addClass(this.fields_view.arch.attrs['class']);
|
||||||
this.$buttons = $(QWeb.render("KanbanView.buttons", {'widget': this}));
|
this.$buttons = $(QWeb.render("KanbanView.buttons", {'widget': this}));
|
||||||
if (this.options.$buttons) {
|
if (this.options.$buttons) {
|
||||||
|
|
Loading…
Reference in New Issue