From fbdabc9615faea5903afd3080ace6556ea3272a0 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Tue, 3 Dec 2019 10:34:47 -0500 Subject: [PATCH] fix(calendar(js)): fix refresh of attendees freebusy information * refresh template with freebusy information of organizer * fix event coverage in freebusy timeline when event spans a day Related to bug #4899 --- UI/WebServerResources/js/Scheduler/Attendees.service.js | 8 ++++++-- UI/WebServerResources/js/Scheduler/ComponentController.js | 4 +++- .../js/Scheduler/sgFreebusy.directive.js | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/UI/WebServerResources/js/Scheduler/Attendees.service.js b/UI/WebServerResources/js/Scheduler/Attendees.service.js index f06848284..714cef5d3 100644 --- a/UI/WebServerResources/js/Scheduler/Attendees.service.js +++ b/UI/WebServerResources/js/Scheduler/Attendees.service.js @@ -240,7 +240,9 @@ var index = _.findIndex(this.component.attendees, function(currentAttendee) { return currentAttendee.email == attendee.email; }); - this.component.attendees.splice(index, 1); + if (index > -1) + this.component.attendees.splice(index, 1); + delete this.$futureFreebusyData[attendee.uid]; }; /** @@ -270,7 +272,9 @@ roundedStart.setMinutes(15*startQuarter); roundedEnd.setMinutes(15*endQuarter); - _.forEach(roundedStart.daysUpTo(roundedEnd), function(date, index) { + _.forEach(roundedStart.beginOfDay().daysUpTo(roundedEnd.beginOfDay()), function(date, index) { + if (date < roundedStart) + date = new Date(roundedStart.getTime()); var currentDay = date.getDate(), dayKey = date.getDayString(), hourKey; diff --git a/UI/WebServerResources/js/Scheduler/ComponentController.js b/UI/WebServerResources/js/Scheduler/ComponentController.js index 8c8decbc4..f44bb8662 100644 --- a/UI/WebServerResources/js/Scheduler/ComponentController.js +++ b/UI/WebServerResources/js/Scheduler/ComponentController.js @@ -358,8 +358,10 @@ this.removeAttendee = function (attendee, form) { this.component.$attendees.remove(attendee); - if (this.component.$attendees.getLength() === 0) + if (this.component.$attendees.getLength() === 0) { this.showAttendeesEditor = false; + this.component.$attendees.remove(this.component.organizer); + } form.$setDirty(); }; diff --git a/UI/WebServerResources/js/Scheduler/sgFreebusy.directive.js b/UI/WebServerResources/js/Scheduler/sgFreebusy.directive.js index 09745aabf..dba9045f8 100644 --- a/UI/WebServerResources/js/Scheduler/sgFreebusy.directive.js +++ b/UI/WebServerResources/js/Scheduler/sgFreebusy.directive.js @@ -34,7 +34,7 @@ return $ctrl.component? { start: $ctrl.component.start, end: $ctrl.component.end, - attendees: _.map($ctrl.component.attendees, 'email') + attendees: _.keys($ctrl.component.$attendees.$futureFreebusyData) } : null; }, function(newAttrs, oldAttrs) {