mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-06-27 19:53:36 +00:00
fix calendar across timezone, showEnd/FullDay
This commit is contained in:
parent
222a5f3779
commit
b3ef4b40c5
38
CHANGELOG.md
38
CHANGELOG.md
@ -5,11 +5,49 @@ This project adheres to [Semantic Versioning](https://semver.org/).
|
|||||||
|
|
||||||
❤️ **Donate:** Enjoying MagicMirror²? [Please consider a donation!](https://magicmirror.builders/donate) With your help we can continue to improve the MagicMirror²
|
❤️ **Donate:** Enjoying MagicMirror²? [Please consider a donation!](https://magicmirror.builders/donate) With your help we can continue to improve the MagicMirror²
|
||||||
|
|
||||||
|
## [2.18.0] - Unreleased (Develop Branch)
|
||||||
|
|
||||||
|
_This release is scheduled to be released on 2022-01-01._
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- ESLint version supports now ECMAScript 2018
|
||||||
|
- Cleaned up `updatenotification` module and switched to nunjuck template.
|
||||||
|
- Moved calendar tests from category `electron` to `e2e`.
|
||||||
|
- Update missed translations for Korean language (ko.json)
|
||||||
|
- Update missed translations for Dutch language (nl.json)
|
||||||
|
- Cleaned up `alert` module and switched to nunjuck template.
|
||||||
|
- Moved weather tests from category `electron` to `e2e`.
|
||||||
|
- Updated github actions.
|
||||||
|
- Replace spectron with playwright, update dependencies including electron update to v16.
|
||||||
|
- Added lithuanian language to translations.js
|
||||||
|
- Show info message if newsfeed is empty (fixes #2731)
|
||||||
|
- Added dangerouslyDisableAutoEscaping config option for newsfeed templates (fixes #2712)
|
||||||
|
- Added missing shebang to `installers/mm.sh`.
|
||||||
|
- Node versions in templates and github workflows.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed wrong file `kr.json` to `ko.json`. Use language code 'ko' instead of 'kr' for Korean language.
|
||||||
|
- Fixed `feels_like` data from openweathermaps current weather being ignored (#2678).
|
||||||
|
- Fixed chaotic newsfeed display after network connection loss thanks to @jalibu (#2638).
|
||||||
|
- Fixed incorrect time zone correction of recurring full day events (#2632 and #2634).
|
||||||
|
- Fixed e2e tests by increasing testTimeout.
|
||||||
|
- Revert node-ical update due to missing luxon package.
|
||||||
|
- Fixed User-Agent-Header for newsfeed and calendar module (#2729).
|
||||||
|
- Replace broken shields in Readme and use https for links.
|
||||||
|
- Fixed electron tests with retry.
|
||||||
|
- Fixed Calendar recurring cross timezone error (add/subtract a day, not just offset hours) (#2632)
|
||||||
|
- Fixed Calendar showEnd and Full Date overlay (#2629)
|
||||||
|
|
||||||
## [2.17.1] - 2021-10-01
|
## [2.17.1] - 2021-10-01
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Fixed error when accessing letsencrypt certificates
|
- Fixed error when accessing letsencrypt certificates
|
||||||
|
- Fixed Calendar module enhancement: displaying full events without time (#2424)
|
||||||
|
|
||||||
## [2.17.0] - 2021-10-01
|
## [2.17.0] - 2021-10-01
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ const CalendarUtils = {
|
|||||||
if (h > 0 && h < Math.abs(current_offset) / 60) {
|
if (h > 0 && h < Math.abs(current_offset) / 60) {
|
||||||
// if so, rrule created a wrong date (utc day, oops, with utc yesterday adjusted time)
|
// if so, rrule created a wrong date (utc day, oops, with utc yesterday adjusted time)
|
||||||
// we need to fix that
|
// we need to fix that
|
||||||
adjustHours = 24;
|
//adjustHours = 24;
|
||||||
// Log.debug("adjusting date")
|
// Log.debug("adjusting date")
|
||||||
}
|
}
|
||||||
//-300 > -240
|
//-300 > -240
|
||||||
@ -160,7 +160,7 @@ const CalendarUtils = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (event.type === "VEVENT") {
|
if (event.type === "VEVENT") {
|
||||||
Log.debug("\nEvent: " + JSON.stringify(event));
|
Log.debug("Event:\n" + JSON.stringify(event));
|
||||||
let startDate = eventDate(event, "start");
|
let startDate = eventDate(event, "start");
|
||||||
let endDate;
|
let endDate;
|
||||||
|
|
||||||
@ -177,8 +177,8 @@ const CalendarUtils = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.debug("startDate (local): " + startDate.toDate());
|
Log.debug("start: " + startDate.toDate());
|
||||||
Log.debug("endDate (local): " + endDate.toDate());
|
Log.debug("end:: " + endDate.toDate());
|
||||||
|
|
||||||
// Calculate the duration of the event for use with recurring events.
|
// Calculate the duration of the event for use with recurring events.
|
||||||
let duration = parseInt(endDate.format("x")) - parseInt(startDate.format("x"));
|
let duration = parseInt(endDate.format("x")) - parseInt(startDate.format("x"));
|
||||||
@ -332,22 +332,20 @@ const CalendarUtils = {
|
|||||||
Log.debug("Fullday");
|
Log.debug("Fullday");
|
||||||
// If the offset is negative (east of GMT), where the problem is
|
// If the offset is negative (east of GMT), where the problem is
|
||||||
if (dateoffset < 0) {
|
if (dateoffset < 0) {
|
||||||
// Remove the offset, independently of the comparison between the date hour and the offset,
|
//if (dh <= Math.abs(dateoffset / 60)) {
|
||||||
// since in the case that *date houre < offset*, the *new Date* command will handle this by
|
// reduce the time by the offset
|
||||||
// representing the day before.
|
|
||||||
|
|
||||||
// Reduce the time by the offset:
|
|
||||||
// Apply the correction to the date/time to get it UTC relative
|
// Apply the correction to the date/time to get it UTC relative
|
||||||
date = new Date(date.getTime() - Math.abs(nowOffset) * 60000);
|
date = new Date(date.getTime() - Math.abs(24 * 60) * 60000);
|
||||||
// the duration was calculated way back at the top before we could correct the start time..
|
// the duration was calculated way back at the top before we could correct the start time..
|
||||||
// fix it for this event entry
|
// fix it for this event entry
|
||||||
//duration = 24 * 60 * 60 * 1000;
|
//duration = 24 * 60 * 60 * 1000;
|
||||||
Log.debug("new recurring date1 is " + date);
|
Log.debug("new recurring date1 is " + date);
|
||||||
|
//}
|
||||||
} else {
|
} else {
|
||||||
// if the timezones are the same, correct date if needed
|
// if the timezones are the same, correct date if needed
|
||||||
if (event.start.tz === moment.tz.guess()) {
|
//if (event.start.tz === moment.tz.guess()) {
|
||||||
// if the date hour is less than the offset
|
// if the date hour is less than the offset
|
||||||
if (24 - dh < Math.abs(dateoffset / 60)) {
|
if (24 - dh <= Math.abs(dateoffset / 60)) {
|
||||||
// apply the correction to the date/time back to right day
|
// apply the correction to the date/time back to right day
|
||||||
date = new Date(date.getTime() + Math.abs(24 * 60) * 60000);
|
date = new Date(date.getTime() + Math.abs(24 * 60) * 60000);
|
||||||
// the duration was calculated way back at the top before we could correct the start time..
|
// the duration was calculated way back at the top before we could correct the start time..
|
||||||
@ -355,17 +353,17 @@ const CalendarUtils = {
|
|||||||
//duration = 24 * 60 * 60 * 1000;
|
//duration = 24 * 60 * 60 * 1000;
|
||||||
Log.debug("new recurring date2 is " + date);
|
Log.debug("new recurring date2 is " + date);
|
||||||
}
|
}
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// not full day, but luxon can still screw up the date on the rule processing
|
// not full day, but luxon can still screw up the date on the rule processing
|
||||||
// we need to correct the date to get back to the right event for
|
// we need to correct the date to get back to the right event for
|
||||||
if (dateoffset < 0) {
|
if (dateoffset < 0) {
|
||||||
// if the date hour is less than the offset
|
// if the date hour is less than the offset
|
||||||
if (dh < Math.abs(dateoffset / 60)) {
|
if (dh <= Math.abs(dateoffset / 60)) {
|
||||||
// Reduce the time by the offset:
|
// Reduce the time by the offset:
|
||||||
// Apply the correction to the date/time to get it UTC relative
|
// Apply the correction to the date/time to get it UTC relative
|
||||||
date = new Date(date.getTime() - Math.abs(nowOffset) * 60000);
|
date = new Date(date.getTime() - Math.abs(24 * 60) * 60000);
|
||||||
// the duration was calculated way back at the top before we could correct the start time..
|
// the duration was calculated way back at the top before we could correct the start time..
|
||||||
// fix it for this event entry
|
// fix it for this event entry
|
||||||
//duration = 24 * 60 * 60 * 1000;
|
//duration = 24 * 60 * 60 * 1000;
|
||||||
@ -373,9 +371,9 @@ const CalendarUtils = {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// if the timezones are the same, correct date if needed
|
// if the timezones are the same, correct date if needed
|
||||||
if (event.start.tz === moment.tz.guess()) {
|
//if (event.start.tz === moment.tz.guess()) {
|
||||||
// if the date hour is less than the offset
|
// if the date hour is less than the offset
|
||||||
if (24 - dh < Math.abs(dateoffset / 60)) {
|
if (24 - dh <= Math.abs(dateoffset / 60)) {
|
||||||
// apply the correction to the date/time back to right day
|
// apply the correction to the date/time back to right day
|
||||||
date = new Date(date.getTime() + Math.abs(24 * 60) * 60000);
|
date = new Date(date.getTime() + Math.abs(24 * 60) * 60000);
|
||||||
// the duration was calculated way back at the top before we could correct the start time..
|
// the duration was calculated way back at the top before we could correct the start time..
|
||||||
@ -383,11 +381,11 @@ const CalendarUtils = {
|
|||||||
//duration = 24 * 60 * 60 * 1000;
|
//duration = 24 * 60 * 60 * 1000;
|
||||||
Log.debug("new recurring date2 is " + date);
|
Log.debug("new recurring date2 is " + date);
|
||||||
}
|
}
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
startDate = moment(date);
|
startDate = moment(date);
|
||||||
Log.debug("Corrected startDate (local): " + startDate.toDate());
|
Log.debug("Corrected startDate: " + startDate.toDate());
|
||||||
|
|
||||||
let adjustDays = CalendarUtils.calculateTimezoneAdjustment(event, date);
|
let adjustDays = CalendarUtils.calculateTimezoneAdjustment(event, date);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user