diff --git a/modules/default/calendar/README.md b/modules/default/calendar/README.md
index 2c3ad142..cfe4e2b8 100644
--- a/modules/default/calendar/README.md
+++ b/modules/default/calendar/README.md
@@ -40,6 +40,12 @@ The following properties can be configured:
Default value: 10
+
displaySymbol |
Display a symbol in front of an entry.
diff --git a/modules/default/calendar/calendar.js b/modules/default/calendar/calendar.js
index f7b837b0..84045944 100644
--- a/modules/default/calendar/calendar.js
+++ b/modules/default/calendar/calendar.js
@@ -12,6 +12,7 @@ Module.register('calendar',{
// Define module defaults
defaults: {
maximumEntries: 10, // Total Maximum Entries
+ maximumNumberOfDays: 365,
displaySymbol: true,
defaultSymbol: 'calendar', // Fontawsome Symbol see http://fontawesome.io/cheatsheet/
maxTitleLength: 25,
@@ -180,6 +181,7 @@ Module.register('calendar',{
this.sendSocketNotification('ADD_CALENDAR', {
url: url,
maximumEntries: this.config.maximumEntries,
+ maximumNumberOfDays: this.config.maximumNumberOfDays,
fetchInterval: this.config.fetchInterval
});
},
diff --git a/modules/default/calendar/node_helper.js b/modules/default/calendar/node_helper.js
index 09e212b0..678a6498 100644
--- a/modules/default/calendar/node_helper.js
+++ b/modules/default/calendar/node_helper.js
@@ -10,7 +10,7 @@ var ical = require('ical');
var moment = require('moment');
var validUrl = require('valid-url');
-var CalendarFetcher = function(url, reloadInterval, maximumEntries) {
+var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumberOfDays) {
var self = this;
var reloadTimer = null;
@@ -42,6 +42,7 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries) {
for (var e in data) {
var event = data[e];
+ var today = moment().startOf('day');
if (event.type === 'VEVENT') {
var startDate = (event.start.length === 8) ? moment(event.start, 'YYYYMMDD') : moment(new Date(event.start));
@@ -54,6 +55,7 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries) {
// 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(),
rule.timeset[0].second == now.getSeconds()) {
@@ -63,10 +65,7 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries) {
rule.timeset[0].second = startDate.format('s');
}
- var oneYear = new Date();
- oneYear.setFullYear(oneYear.getFullYear() + 1);
-
- var dates = rule.between(new Date(), oneYear, true, limitFunction);
+ var dates = rule.between(new Date(), today.add(maximumNumberOfDays, 'days') , true, limitFunction);
//console.log(dates);
for (var d in dates) {
startDate = moment(new Date(dates[d]));
@@ -78,8 +77,8 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries) {
} else {
// Single event.
- var today = moment().startOf('day');
- if (startDate > today) {
+
+ if (startDate > today && startDate <= today.add(maximumNumberOfDays, 'days')) {
newEvents.push({
title: event.summary,
startDate: startDate.format('x')
@@ -187,7 +186,7 @@ module.exports = NodeHelper.create({
socketNotificationReceived: function(notification, payload) {
if (notification === 'ADD_CALENDAR') {
//console.log('ADD_CALENDAR: ');
- this.createFetcher(payload.url, payload.fetchInterval, payload.maximumEntries);
+ this.createFetcher(payload.url, payload.fetchInterval, payload.maximumEntries, payload.maximumNumberOfDays);
}
},
@@ -199,7 +198,7 @@ module.exports = NodeHelper.create({
* attribute reloadInterval number - Reload interval in milliseconds.
*/
- createFetcher: function(url, fetchInterval, maximumEntries) {
+ createFetcher: function(url, fetchInterval, maximumEntries, maximumNumberOfDays) {
var self = this;
if (!validUrl.isUri(url)){
@@ -210,7 +209,7 @@ module.exports = NodeHelper.create({
var fetcher;
if (typeof self.fetchers[url] === 'undefined') {
console.log('Create new calendar fetcher for url: ' + url + ' - Interval: ' + fetchInterval);
- fetcher = new CalendarFetcher(url, fetchInterval, maximumEntries);
+ fetcher = new CalendarFetcher(url, fetchInterval, maximumEntries, maximumNumberOfDays);
fetcher.onReceive(function(fetcher) {
//console.log('Broadcast events.');
|