From 10b5eb736f20fdc59d39ee2bc0d7b2303f53b7ec Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Fri, 4 Oct 2019 09:54:29 -0400 Subject: [PATCH] (js) Handle DST change in Date.daysUpTo --- NEWS | 1 + UI/WebServerResources/js/Common/utils.js | 31 ++++++++++--------- .../js/Scheduler/ComponentController.js | 2 +- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/NEWS b/NEWS index b77097466..2c648cf63 100644 --- a/NEWS +++ b/NEWS @@ -25,6 +25,7 @@ Bug fixes - [web] don't mark draft as deleted when SOGoMailKeepDraftsAfterSend is enabled (#4830) - [web] allow single-day vacation auto-reply (#4698) - [web] allow import to calendar subscriptions with creation rights + - [web] handle DST change in Date.daysUpTo - [core] honor IMAPLoginFieldName also when setting IMAP ACLs - [core] honor groups when setting IMAP ACLs - [core] honor "any authenticated user" when setting IMAP ACLs diff --git a/UI/WebServerResources/js/Common/utils.js b/UI/WebServerResources/js/Common/utils.js index 8b6b61f88..72e27f5a4 100644 --- a/UI/WebServerResources/js/Common/utils.js +++ b/UI/WebServerResources/js/Common/utils.js @@ -269,24 +269,25 @@ Date.prototype.clone = function() { }; Date.prototype.daysUpTo = function(otherDate) { - var days = []; + var days = []; - var day1 = this.getTime(); - var day2 = otherDate.getTime(); - if (day1 > day2) { - var tmp = day1; - day1 = day2; - day2 = tmp; - } + var day1 = this.getTime(); + var day2 = otherDate.getTime(); + if (day1 > day2) { + var tmp = day1; + day1 = day2; + day2 = tmp; + } - var nbrDays = Math.round((day2 - day1) / 86400000) + 1; - for (var i = 0; i < nbrDays; i++) { - var newDate = new Date(); - newDate.setTime(day1 + (i * 86400000)); - days.push(newDate); - } + var DAY_SECS = 25 * 60 * 60 * 1000; // compensate for DST + var nbrDays = Math.round((day2 - day1) / DAY_SECS) + 1; + for (var i = 0; i < nbrDays; i++) { + var newDate = new Date(); + newDate.setTime(day1 + (i * 86400000)); + days.push(newDate); + } - return days; + return days; }; Date.prototype.minutesTo = function(otherDate) { diff --git a/UI/WebServerResources/js/Scheduler/ComponentController.js b/UI/WebServerResources/js/Scheduler/ComponentController.js index 5ab35f1c5..3cf505ac0 100644 --- a/UI/WebServerResources/js/Scheduler/ComponentController.js +++ b/UI/WebServerResources/js/Scheduler/ComponentController.js @@ -534,7 +534,7 @@ function updateFreeBusy() { vm.component.$attendees.updateFreeBusyCoverage(); vm.component.$attendees.updateFreeBusy(); - scrollToStart(); + $timeout(scrollToStart); } }