[FIX] {web_,}calendar: order contact sidebar

In 22051dc, the sidebar contacts of the calendar were ordered, this does
it in another way to solve several issues when selecting filters.
This commit is contained in:
Nicolas Lempereur
2016-02-11 16:34:33 +01:00
parent fb7bb95a11
commit 924c2dee21
3 changed files with 29 additions and 16 deletions
+19 -15
View File
@@ -38,19 +38,18 @@ function reload_favorite_list(result) {
is_checked: true,
is_remove: false,
};
sidebar_items[1] = filter_item ;
sidebar_items[filter_value] = filter_item;
filter_item = {
value: -1,
label: _lt("Everybody's calendars"),
color: self.get_color(-1),
avatar_model: self.avatar_model,
is_checked: false
};
sidebar_items[-1] = filter_item ;
value: -1,
label: _lt("Everybody's calendars"),
color: self.get_color(-1),
avatar_model: self.avatar_model,
is_checked: false
};
sidebar_items[-1] = filter_item;
//Get my coworkers/contacts
new Model("calendar.contacts").query(["partner_id"]).filter([["user_id", "=",self.dataset.context.uid]]).all().then(function(result) {
var unsorted_res = {};
_.each(result, function(item) {
filter_value = item.partner_id[0];
filter_item = {
@@ -60,17 +59,13 @@ function reload_favorite_list(result) {
avatar_model: self.avatar_model,
is_checked: true
};
unsorted_res[filter_item.label + " " +filter_value] = filter_item;
});
var i = 2;
_.keys(unsorted_res).sort().forEach(function(key){
sidebar_items[i++] = unsorted_res[key];
sidebar_items[filter_value] = filter_item;
});
self.all_filters = sidebar_items;
self.now_filter_ids = $.map(self.all_filters, function(o) { return o.value; });
self.sidebar.filter.events_loaded(self.all_filters);
self.sidebar.filter.events_loaded(self.get_all_filters_ordered());
self.sidebar.filter.set_filters();
self.sidebar.filter.add_favorite_calendar();
self.sidebar.filter.destroy_filter();
@@ -90,6 +85,15 @@ CalendarView.include({
return result.then(reload_favorite_list(this));
}
return result;
},
get_all_filters_ordered: function() {
var filters = this._super();
if (this.useContacts) {
var filter_me = _.first(_.values(this.all_filters));
var filter_all = this.all_filters[-1];
filters = [].concat(filter_me, _.difference(filters, [filter_me, filter_all]), filter_all);
}
return filters;
}
});
@@ -833,6 +833,15 @@ var CalendarView = View.extend({
return new CompoundDomain(domain, extend_domain);
},
/**
* Get all_filters ordered by label
*/
get_all_filters_ordered: function() {
return _.values(this.all_filters).sort(function(f1,f2) {
return _.string.naturalCmp(f1.label, f2.label);
});
},
/**
* Updates record identified by ``id`` with values in object ``data``
*/
+1 -1
View File
@@ -222,7 +222,7 @@ var SidebarFilter = Widget.extend({
var self = this;
if (!filters) {
filters = [];
_.forEach(self.view.all_filters, function(o) {
_.forEach(self.view.get_all_filters_ordered(), function(o) {
if (_.contains(self.view.now_filter_ids, o.value)) {
filters.push(o);
}