[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:
@@ -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``
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user