mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-06-27 03:39:55 +00:00
Hello and thank you for wanting to contribute to the MagicMirror² project **Please make sure that you have followed these 4 rules before submitting your Pull Request:** > 1. Base your pull requests against the `develop` branch. > 2. Include these infos in the description: > > - Does the pull request solve a **related** issue? > - If so, can you reference the issue like this `Fixes #<issue_number>`? > - What does the pull request accomplish? Use a list if needed. > - If it includes major visual changes please add screenshots. > > 3. Please run `npm run lint:prettier` before submitting so that > style issues are fixed. > 4. Don't forget to add an entry about your changes to > the CHANGELOG.md file. **Note**: Sometimes the development moves very fast. It is highly recommended that you update your branch of `develop` before creating a pull request to send us your changes. This makes everyone's lives easier (including yours) and helps us out on the development team. Thanks again and have a nice day!
This commit is contained in:
parent
2a6e2aacdc
commit
fe882bf92a
@ -1,3 +1,6 @@
|
|||||||
|
.eslintignore
|
||||||
|
.prettierignore
|
||||||
/config
|
/config
|
||||||
/coverage
|
/coverage
|
||||||
package-lock.json
|
package-lock.json
|
||||||
|
**.ics
|
||||||
|
@ -32,6 +32,7 @@ _This release is scheduled to be released on 2024-01-01._
|
|||||||
- Fix newsfeed module for feeds using "a10:updated" tag (#3238)
|
- Fix newsfeed module for feeds using "a10:updated" tag (#3238)
|
||||||
- Fix issue template (#3167)
|
- Fix issue template (#3167)
|
||||||
- Fix for failing unit test (#3254)
|
- Fix for failing unit test (#3254)
|
||||||
|
- Fix calendar events sometimes not respecting deleted events (#3250)
|
||||||
|
|
||||||
## [2.25.0] - 2023-10-01
|
## [2.25.0] - 2023-10-01
|
||||||
|
|
||||||
|
@ -305,11 +305,6 @@ const CalendarFetcherUtils = {
|
|||||||
// Loop through the set of date entries to see which recurrences should be added to our event list.
|
// Loop through the set of date entries to see which recurrences should be added to our event list.
|
||||||
for (let d in dates) {
|
for (let d in dates) {
|
||||||
let date = dates[d];
|
let date = dates[d];
|
||||||
// Remove the time information of each date by using its substring, using the following method:
|
|
||||||
// .toISOString().substring(0,10).
|
|
||||||
// since the date is given as ISOString with YYYY-MM-DDTHH:MM:SS.SSSZ
|
|
||||||
// (see https://momentjs.com/docs/#/displaying/as-iso-string/).
|
|
||||||
const dateKey = date.toISOString().substring(0, 10);
|
|
||||||
let curEvent = event;
|
let curEvent = event;
|
||||||
let showRecurrence = true;
|
let showRecurrence = true;
|
||||||
|
|
||||||
@ -402,6 +397,13 @@ const CalendarFetcherUtils = {
|
|||||||
|
|
||||||
let adjustDays = CalendarFetcherUtils.calculateTimezoneAdjustment(event, date);
|
let adjustDays = CalendarFetcherUtils.calculateTimezoneAdjustment(event, date);
|
||||||
|
|
||||||
|
// Remove the time information of each date by using its substring, using the following method:
|
||||||
|
// .toISOString().substring(0,10).
|
||||||
|
// since the date is given as ISOString with YYYY-MM-DDTHH:MM:SS.SSSZ
|
||||||
|
// (see https://momentjs.com/docs/#/displaying/as-iso-string/).
|
||||||
|
// This must be done after `date` is adjusted
|
||||||
|
const dateKey = date.toISOString().substring(0, 10);
|
||||||
|
|
||||||
// For each date that we're checking, it's possible that there is a recurrence override for that one day.
|
// For each date that we're checking, it's possible that there is a recurrence override for that one day.
|
||||||
if (curEvent.recurrences !== undefined && curEvent.recurrences[dateKey] !== undefined) {
|
if (curEvent.recurrences !== undefined && curEvent.recurrences[dateKey] !== undefined) {
|
||||||
// We found an override, so for this recurrence, use a potentially different title, start date, and duration.
|
// We found an override, so for this recurrence, use a potentially different title, start date, and duration.
|
||||||
|
36
tests/configs/modules/calendar/exdate.js
Normal file
36
tests/configs/modules/calendar/exdate.js
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/* MagicMirror² Test calendar exdate
|
||||||
|
*
|
||||||
|
* By jkriegshauser
|
||||||
|
* MIT Licensed.
|
||||||
|
*
|
||||||
|
* NOTE: calendar_test_exdate.ics has exdate entries for the next 20 years, but without some
|
||||||
|
* way to set a debug date for tests, this test may become flaky on specific days (i.e. could
|
||||||
|
* not test easily on leap-years, the BYDAY specified in exdate, etc.) or when the 20 years
|
||||||
|
* elapses if this project is still in active development ;)
|
||||||
|
* See issue #3250
|
||||||
|
*/
|
||||||
|
let config = {
|
||||||
|
timeFormat: 12,
|
||||||
|
|
||||||
|
modules: [
|
||||||
|
{
|
||||||
|
module: "calendar",
|
||||||
|
position: "bottom_bar",
|
||||||
|
config: {
|
||||||
|
maximumEntries: 100,
|
||||||
|
calendars: [
|
||||||
|
{
|
||||||
|
maximumEntries: 100,
|
||||||
|
maximumNumberOfDays: 364,
|
||||||
|
url: "http://localhost:8080/tests/mocks/calendar_test_exdate.ics"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
/*************** DO NOT EDIT THE LINE BELOW ***************/
|
||||||
|
if (typeof module !== "undefined") {
|
||||||
|
module.exports = config;
|
||||||
|
}
|
@ -84,6 +84,17 @@ describe("Calendar module", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("exdate check", () => {
|
||||||
|
beforeAll(async () => {
|
||||||
|
await helpers.startApplication("tests/configs/modules/calendar/exdate.js");
|
||||||
|
await helpers.getDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should show the recurring event 51 times (excluded once) in a 364-day (inclusive) period", async () => {
|
||||||
|
await testElementLength(".calendar .event", 51);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe("Events from multiple calendars", () => {
|
describe("Events from multiple calendars", () => {
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
await helpers.startApplication("tests/configs/modules/calendar/show-duplicates-in-calendar.js");
|
await helpers.startApplication("tests/configs/modules/calendar/show-duplicates-in-calendar.js");
|
||||||
|
34
tests/mocks/calendar_test_exdate.ics
Normal file
34
tests/mocks/calendar_test_exdate.ics
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
BEGIN:VEVENT
|
||||||
|
DTSTART;TZID=UTC:20231025T181000
|
||||||
|
DTEND;TZID=UTC:20231025T195000
|
||||||
|
RRULE:FREQ=WEEKLY;BYDAY=WE
|
||||||
|
EXDATE;TZID=UTC:20231101T181000
|
||||||
|
EXDATE;TZID=UTC:20241030T181000
|
||||||
|
EXDATE;TZID=UTC:20251029T181000
|
||||||
|
EXDATE;TZID=UTC:20261028T181000
|
||||||
|
EXDATE;TZID=UTC:20271027T181000
|
||||||
|
EXDATE;TZID=UTC:20281025T181000
|
||||||
|
EXDATE;TZID=UTC:20291024T181000
|
||||||
|
EXDATE;TZID=UTC:20301023T181000
|
||||||
|
EXDATE;TZID=UTC:20311022T181000
|
||||||
|
EXDATE;TZID=UTC:20321020T181000
|
||||||
|
EXDATE;TZID=UTC:20331019T181000
|
||||||
|
EXDATE;TZID=UTC:20341018T181000
|
||||||
|
EXDATE;TZID=UTC:20351017T181000
|
||||||
|
EXDATE;TZID=UTC:20361015T181000
|
||||||
|
EXDATE;TZID=UTC:20371014T181000
|
||||||
|
EXDATE;TZID=UTC:20381013T181000
|
||||||
|
EXDATE;TZID=UTC:20391012T181000
|
||||||
|
EXDATE;TZID=UTC:20401010T181000
|
||||||
|
EXDATE;TZID=UTC:20411009T181000
|
||||||
|
EXDATE;TZID=UTC:20421008T181000
|
||||||
|
EXDATE;TZID=UTC:20431007T181000
|
||||||
|
DTSTAMP:20231025T233434Z
|
||||||
|
UID:sdflbkasuhdb5fkauglkb@google.com
|
||||||
|
CREATED:20230306T193128Z
|
||||||
|
LAST-MODIFIED:20231024T222515Z
|
||||||
|
SEQUENCE:0
|
||||||
|
STATUS:CONFIRMED
|
||||||
|
SUMMARY:My Event
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
END:VEVENT
|
Loading…
x
Reference in New Issue
Block a user