mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-06-27 11:50:00 +00:00
Fix Facebook Birthdays - Fix: #97
This commit is contained in:
parent
7b6772e77b
commit
598cf61eb4
@ -121,7 +121,13 @@ The following properties can be configured:
|
||||
<tr>
|
||||
<td><code>emptyCalendarText</code></td>
|
||||
<td>Text to display when there are no upcoming events.<br>
|
||||
<br><b>Default value:</b> <code>''No upcoming events.'</code>
|
||||
<br><b>Default value:</b> <code>'No upcoming events.'</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>todayText</code></td>
|
||||
<td>Text to display when an event is planned for today.<br>
|
||||
<br><b>Default value:</b> <code>'Today'</code>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -30,7 +30,10 @@ Module.register('calendar',{
|
||||
'De verjaardag van ' : ''
|
||||
},
|
||||
loadingText: 'Loading events …',
|
||||
emptyCalendarText: 'No upcoming events.'
|
||||
emptyCalendarText: 'No upcoming events.',
|
||||
|
||||
// TODO: It would be nice if there is a way to get this from the Moment.js locale.
|
||||
todayText: 'Today'
|
||||
},
|
||||
|
||||
// Define required scripts.
|
||||
@ -112,7 +115,8 @@ Module.register('calendar',{
|
||||
eventWrapper.appendChild(titleWrapper);
|
||||
|
||||
var timeWrapper = document.createElement("td");
|
||||
timeWrapper.innerHTML = moment(event.startDate,'x').fromNow();
|
||||
timeWrapper.innerHTML = (event.today) ? this.config.todayText : moment(event.startDate,'x').fromNow();
|
||||
// timeWrapper.innerHTML = moment(event.startDate,'x').format('lll');
|
||||
timeWrapper.className = "time light";
|
||||
eventWrapper.appendChild(timeWrapper);
|
||||
|
||||
@ -160,11 +164,13 @@ Module.register('calendar',{
|
||||
*/
|
||||
createEventList: function() {
|
||||
var events = [];
|
||||
var today = moment().startOf('day');
|
||||
for (var c in this.calendarData) {
|
||||
var calendar = this.calendarData[c];
|
||||
for (var e in calendar) {
|
||||
var event = calendar[e];
|
||||
event.url = c;
|
||||
event.today = event.startDate >= today && event.startDate < (today + 24 * 60 * 60 * 1000);
|
||||
events.push(event);
|
||||
}
|
||||
}
|
||||
|
@ -42,19 +42,35 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumbe
|
||||
|
||||
for (var e in data) {
|
||||
var event = data[e];
|
||||
var now = new Date();
|
||||
var today = moment().startOf('day');
|
||||
|
||||
//console.log(event);
|
||||
|
||||
// FIXME:
|
||||
// Ugly fix to solve the facebook birthday issue.
|
||||
// Otherwise, the recurring events only show the birthday for next year.
|
||||
var isFacebookBirthday = false;
|
||||
if (typeof event.uid !== 'undefined') {
|
||||
if (event.uid.indexOf('@facebook.com') !== -1) {
|
||||
isFacebookBirthday = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (event.type === 'VEVENT') {
|
||||
var startDate = (event.start.length === 8) ? moment(event.start, 'YYYYMMDD') : moment(new Date(event.start));
|
||||
if (event.start.length === 8) {
|
||||
startDate = startDate.startOf('day');
|
||||
}
|
||||
|
||||
if (typeof event.rrule != 'undefined') {
|
||||
if (typeof event.rrule != 'undefined' && !isFacebookBirthday) {
|
||||
var rule = event.rrule;
|
||||
|
||||
// Check if the timeset is set to this current time.
|
||||
// If so, the RRULE line does not contain any BYHOUR, BYMINUTE, BYSECOND params.
|
||||
// This causes the times of the recurring event to be incorrect.
|
||||
// By adjusting the timeset property, this issue is solved.
|
||||
var now = new Date();
|
||||
|
||||
|
||||
if (rule.timeset[0].hour == now.getHours(),
|
||||
rule.timeset[0].minute == now.getMinutes(),
|
||||
@ -65,23 +81,24 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumbe
|
||||
rule.timeset[0].second = startDate.format('s');
|
||||
}
|
||||
|
||||
var dates = rule.between(new Date(), today.add(maximumNumberOfDays, 'days') , true, limitFunction);
|
||||
//console.log(dates);
|
||||
var dates = rule.between(today, today.add(maximumNumberOfDays, 'days') , true, limitFunction);
|
||||
console.log(dates);
|
||||
for (var d in dates) {
|
||||
startDate = moment(new Date(dates[d]));
|
||||
newEvents.push({
|
||||
title: (typeof event.summary.val !== 'undefined') ? event.summary.val : event.summary,
|
||||
startDate: startDate.format('x')
|
||||
startDate: startDate.format('x'),
|
||||
fullDayEvent: (event.start.length === 8)
|
||||
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Single event.
|
||||
|
||||
|
||||
if (startDate > today && startDate <= today.add(maximumNumberOfDays, 'days')) {
|
||||
if (startDate >= today && startDate <= today.add(maximumNumberOfDays, 'days')) {
|
||||
newEvents.push({
|
||||
title: (typeof event.summary.val !== 'undefined') ? event.summary.val : event.summary,
|
||||
startDate: startDate.format('x')
|
||||
startDate: startDate.format('x'),
|
||||
fullDayEvent: (event.start.length === 8)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user