diff --git a/modules/default/calendar/README.md b/modules/default/calendar/README.md index 385b917d..92574415 100644 --- a/modules/default/calendar/README.md +++ b/modules/default/calendar/README.md @@ -130,6 +130,12 @@ The following properties can be configured:
Default value: 'Today' + + runningText + Text to display when an event is still running.
+
Default value: 'Ends in' + + diff --git a/modules/default/calendar/calendar.js b/modules/default/calendar/calendar.js index b2828c22..1c2dfb28 100644 --- a/modules/default/calendar/calendar.js +++ b/modules/default/calendar/calendar.js @@ -33,7 +33,8 @@ Module.register("calendar",{ emptyCalendarText: "No upcoming events.", // TODO: It would be nice if there is a way to get this from the Moment.js locale. - todayText: "Today" + todayText: "Today", + runningText: "Ends in" }, // Define required scripts. @@ -119,7 +120,11 @@ Module.register("calendar",{ if (event.fullDayEvent) { timeWrapper.innerHTML = (event.today) ? this.config.todayText : moment(event.startDate,"x").fromNow(); } else { - timeWrapper.innerHTML = moment(event.startDate,"x").fromNow(); + if (event.startDate >= new Date()) { + timeWrapper.innerHTML = moment(event.startDate,"x").fromNow(); + } else { + timeWrapper.innerHTML = this.config.runningText + ' ' + moment(event.endDate,"x").fromNow(true); + } } // timeWrapper.innerHTML = moment(event.startDate,'x').format('lll'); timeWrapper.className = "time light"; diff --git a/modules/default/calendar/calendarfetcher.js b/modules/default/calendar/calendarfetcher.js index 7e6501e3..a3c9b082 100644 --- a/modules/default/calendar/calendarfetcher.js +++ b/modules/default/calendar/calendarfetcher.js @@ -58,6 +58,7 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumbe if (event.type === "VEVENT") { var startDate = (event.start.length === 8) ? moment(event.start, "YYYYMMDD") : moment(new Date(event.start)); + var endDate = (event.end.length === 8) ? moment(event.end, "YYYYMMDD") : moment(new Date(event.end)); if (event.start.length === 8) { startDate = startDate.startOf("day"); } @@ -88,8 +89,8 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumbe newEvents.push({ title: (typeof event.summary.val !== "undefined") ? event.summary.val : event.summary, startDate: startDate.format("x"), + endDate: endDate.format("x"), fullDayEvent: (event.start.length === 8) - }); } } else { @@ -98,13 +99,13 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumbe var fullDayEvent = (event.start.length === 8); var title = (typeof event.summary.val !== "undefined") ? event.summary.val : event.summary; - if (!fullDayEvent && startDate < new Date()) { + if (!fullDayEvent && endDate < new Date()) { // it's not a fullday event, and it is in the past. So skip. console.log("It's not a fullday event, and it is in the past. So skip: " + title); continue; } - if (fullDayEvent && startDate < today) { + if (fullDayEvent && endDate < today) { // it's a fullday event, and it is before today. So skip. console.log("It's a fullday event, and it is before today. So skip: " + title); continue; @@ -120,6 +121,7 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumbe newEvents.push({ title: title, startDate: startDate.format("x"), + endDate: endDate.format("x"), fullDayEvent: fullDayEvent }); diff --git a/modules/default/calendar/debug.js b/modules/default/calendar/debug.js index 22d23066..c709c312 100644 --- a/modules/default/calendar/debug.js +++ b/modules/default/calendar/debug.js @@ -8,7 +8,7 @@ var CalendarFetcher = require("./calendarfetcher.js"); -var url = 'https://github.com/MichMich/MagicMirror/files/217285/reachcalendar.txt'; +var url = 'http://p35-calendars.icloud.com/published/2/qsud2R2XlRhT3puEVfrzkeSd3X_QSfCMBmpgTsjVqOD2W_fyy0Y-5QskbvWw2jOQB_cPsmcjpGtcg1a3jBQ_QIS2H0XWSxjqCa8LX0dznpE'; var fetchInterval = 60 * 60 * 1000; var maximumEntries = 10; var maximumNumberOfDays = 365;