diff --git a/modules/default/calendar/calendar.js b/modules/default/calendar/calendar.js index 1c2dfb28..0b5627ff 100644 --- a/modules/default/calendar/calendar.js +++ b/modules/default/calendar/calendar.js @@ -121,7 +121,13 @@ Module.register("calendar",{ timeWrapper.innerHTML = (event.today) ? this.config.todayText : moment(event.startDate,"x").fromNow(); } else { if (event.startDate >= new Date()) { - timeWrapper.innerHTML = moment(event.startDate,"x").fromNow(); + var now = new Date(); + if (event.startDate - now > 48 * 60 * 60 * 1000) { + // if the event is no longer than 2 days away, display the absolute time. + timeWrapper.innerHTML = moment(event.startDate,"x").fromNow(); + } else { + timeWrapper.innerHTML = moment(event.startDate,"x").calendar(); + } } else { timeWrapper.innerHTML = this.config.runningText + ' ' + moment(event.endDate,"x").fromNow(true); } diff --git a/modules/default/calendar/calendarfetcher.js b/modules/default/calendar/calendarfetcher.js index 74e4b2da..4d4a0bcd 100644 --- a/modules/default/calendar/calendarfetcher.js +++ b/modules/default/calendar/calendarfetcher.js @@ -96,13 +96,13 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumbe title: (typeof event.summary.val !== "undefined") ? event.summary.val : event.summary, startDate: startDate.format("x"), endDate: endDate.format("x"), - fullDayEvent: (event.start.length === 8) + fullDayEvent: isFullDayEvent(event) }); } } else { // console.log("Single event ..."); // Single event. - var fullDayEvent = (event.start.length === 8); + var fullDayEvent = isFullDayEvent(event); var title = (typeof event.summary.val !== "undefined") ? event.summary.val : event.summary; if (!fullDayEvent && endDate < new Date()) { @@ -154,6 +154,30 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumbe }, reloadInterval); }; + /* isFullDayEvent(event) + * Checks if an event is a fullday event. + * + * argument event obejct - The event object to check. + * + * return bool - The event is a fullday event. + */ + var isFullDayEvent = function(event) { + if (event.start.length === 8) { + return true; + } + + var start = event.start || 0; + var startDate = new Date(start); + var end = event.end || 0; + + if (end - start === 24 * 60 * 60 * 1000 && startDate.getHours() === 0 && startDate.getMinutes() === 0) { + // Is 24 hours, and starts on the middle of the night. + return true; + } + + return false; + }; + /* public methods */ /* startFetch()