summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Lempereur <nle@odoo.com>2016-02-11 15:52:18 +0100
committerNicolas Lempereur <nle@odoo.com>2016-02-11 16:34:33 +0100
commit924c2dee21fffec7eb2df68cbe703238afc9b438 (patch)
treeebf76725d1f535ef88bd1563c5f750a73012b3e0
parentfb7bb95a113033d716c1f4620b5f16497dda99c4 (diff)
[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.
-rw-r--r--addons/calendar/static/src/js/base_calendar.js34
-rw-r--r--addons/web_calendar/static/src/js/web_calendar.js9
-rw-r--r--addons/web_calendar/static/src/js/widgets.js2
3 files changed, 29 insertions, 16 deletions
diff --git a/addons/calendar/static/src/js/base_calendar.js b/addons/calendar/static/src/js/base_calendar.js
index 44e94d32f19..7e92f23f181 100644
--- a/addons/calendar/static/src/js/base_calendar.js
+++ b/addons/calendar/static/src/js/base_calendar.js
@@ -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;
}
});
diff --git a/addons/web_calendar/static/src/js/web_calendar.js b/addons/web_calendar/static/src/js/web_calendar.js
index 69e038f507d..9716dfdc013 100644
--- a/addons/web_calendar/static/src/js/web_calendar.js
+++ b/addons/web_calendar/static/src/js/web_calendar.js
@@ -834,6 +834,15 @@ var CalendarView = View.extend({
},
/**
+ * 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``
*/
update_record: function(id, data) {
diff --git a/addons/web_calendar/static/src/js/widgets.js b/addons/web_calendar/static/src/js/widgets.js
index e5d0f5ae4b8..39324d3caf0 100644
--- a/addons/web_calendar/static/src/js/widgets.js
+++ b/addons/web_calendar/static/src/js/widgets.js
@@ -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);
}