diff options
Diffstat (limited to 'addons/calendar/static/src')
| -rw-r--r-- | addons/calendar/static/src/js/base_calendar.js | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/addons/calendar/static/src/js/base_calendar.js b/addons/calendar/static/src/js/base_calendar.js index 0a9dd625662..600ebd4b01a 100644 --- a/addons/calendar/static/src/js/base_calendar.js +++ b/addons/calendar/static/src/js/base_calendar.js @@ -38,12 +38,12 @@ var CalendarNotification = Notification.extend({ }, 'click .link2recall': function() { - this.destroy(true); + this.close(); }, 'click .link2showed': function() { this._rpc({route: '/calendar/notify_ack'}) - .then(this.destroy.bind(this), this.destroy.bind(this)); + .then(this.close.bind(this, false), this.close.bind(this, false)); }, }); }, @@ -57,22 +57,25 @@ WebClient.include({ // Clear previously set timeouts and destroy currently displayed calendar notifications clearTimeout(this.get_next_calendar_notif_timeout); _.each(this.calendar_notif_timeouts, clearTimeout); - _.each(this.calendar_notif, function (notificationID) { - self.call('notification', 'close', notificationID, true); - }); this.calendar_notif_timeouts = {}; - this.calendar_notif = {}; // For each notification, set a timeout to display it _.each(notifications, function(notif) { - self.calendar_notif_timeouts[notif.event_id] = setTimeout(function() { + var key = notif.event_id + ',' + notif.alarm_id; + if (key in self.calendar_notif) { + return; + } + self.calendar_notif_timeouts[key] = setTimeout(function () { var notificationID = self.call('notification', 'notify', { Notification: CalendarNotification, title: notif.title, message: notif.message, eventID: notif.event_id, + onClose: function () { + delete self.calendar_notif[key]; + }, }); - self.calendar_notif[notif.event_id] = notificationID; + self.calendar_notif[key] = notificationID; }, notif.timer * 1000); last_notif_timer = Math.max(last_notif_timer, notif.timer); }); |
