diff options
| author | Nicolas Lempereur <nle@odoo.com> | 2016-02-11 15:52:18 +0100 |
|---|---|---|
| committer | Nicolas Lempereur <nle@odoo.com> | 2016-02-11 16:34:33 +0100 |
| commit | 924c2dee21fffec7eb2df68cbe703238afc9b438 (patch) | |
| tree | ebf76725d1f535ef88bd1563c5f750a73012b3e0 | |
| parent | fb7bb95a113033d716c1f4620b5f16497dda99c4 (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.js | 34 | ||||
| -rw-r--r-- | addons/web_calendar/static/src/js/web_calendar.js | 9 | ||||
| -rw-r--r-- | addons/web_calendar/static/src/js/widgets.js | 2 |
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); } |
