apostrophe-events
Advanced tools
Comparing version 2.1.4 to 2.1.5
@@ -0,1 +1,5 @@ | ||
### 2.1.5 | ||
The `month` pieces filter now includes all months that events span, not only the months in which they begin. | ||
### 2.1.3 | ||
@@ -2,0 +6,0 @@ |
46
index.js
@@ -1,4 +0,4 @@ | ||
var _ = require('@sailshq/lodash') | ||
, async = require('async') | ||
, moment = require('moment'); | ||
var _ = require('@sailshq/lodash'); | ||
var async = require('async'); | ||
var moment = require('moment'); | ||
@@ -32,3 +32,3 @@ module.exports = { | ||
{ label: 'Yes', value: true }, | ||
{ label: 'No', value: false , showFields: ['startTime', 'endTime'] } | ||
{ label: 'No', value: false, showFields: ['startTime', 'endTime'] } | ||
], | ||
@@ -58,3 +58,3 @@ def: false | ||
{ label: 'Consecutive Days', value: 'consecutive', showFields: ['endDate'] }, | ||
{ label: 'Recurring', value: 'repeat', showFields: ['repeatInterval', 'repeatCount'] }, | ||
{ label: 'Recurring', value: 'repeat', showFields: ['repeatInterval', 'repeatCount'] } | ||
], | ||
@@ -88,3 +88,3 @@ def: 'single' | ||
{ name: 'advanced', label: 'Advanced', fields: ['dateType', 'endDate', 'repeatInterval', 'repeatCount'] }, | ||
{ name: 'meta', label: 'Meta', fields: ['tags','published'] } | ||
{ name: 'meta', label: 'Meta', fields: ['tags', 'published'] } | ||
]; | ||
@@ -95,3 +95,3 @@ | ||
name: 'startDate', | ||
label: 'Start Date', | ||
label: 'Start Date' | ||
} | ||
@@ -149,3 +149,3 @@ ].concat(options.addColumns || []); | ||
} | ||
if(piece.dateType == 'repeat') { | ||
if (piece.dateType === 'repeat') { | ||
return self.repeatEvent(req, piece, callback); | ||
@@ -159,8 +159,8 @@ } else { | ||
// Parse our dates and times | ||
var startTime = piece.startTime | ||
, startDate = piece.startDate | ||
, endTime = piece.endTime | ||
, endDate; | ||
var startTime = piece.startTime; | ||
var startDate = piece.startDate; | ||
var endTime = piece.endTime; | ||
var endDate; | ||
if(piece.dateType == 'consecutive') { | ||
if (piece.dateType === 'consecutive') { | ||
endDate = piece.endDate; | ||
@@ -172,3 +172,3 @@ } else { | ||
if(piece.allDay) { | ||
if (piece.allDay) { | ||
startTime = '00:00:00'; | ||
@@ -178,17 +178,17 @@ endTime = '23:59:59'; | ||
if(piece.dateType == 'repeat') { | ||
if (piece.dateType === 'repeat') { | ||
piece.hasClones = true; | ||
} | ||
piece.start = new Date(startDate +' '+ startTime); | ||
piece.end = new Date(endDate +' '+ endTime); | ||
piece.start = new Date(startDate + ' ' + startTime); | ||
piece.end = new Date(endDate + ' ' + endTime); | ||
}; | ||
self.repeatEvent = function(req, piece, finalCallback) { | ||
var i | ||
, repeat = parseInt(piece.repeatCount) + 1 | ||
, multiplier = piece.repeatInterval | ||
, addDates = []; | ||
var i; | ||
var repeat = parseInt(piece.repeatCount) + 1; | ||
var multiplier = piece.repeatInterval; | ||
var addDates = []; | ||
for(i = 1; i < repeat; i++) { | ||
for (i = 1; i < repeat; i++) { | ||
addDates.push(moment(piece.startDate).add(i, multiplier).format('YYYY-MM-DD')); | ||
@@ -210,3 +210,3 @@ } | ||
}; | ||
}, | ||
} | ||
}; |
@@ -41,3 +41,3 @@ var moment = require('moment'); | ||
self.and({ | ||
end: { $gt: new Date() }, | ||
end: { $gt: new Date() } | ||
}); | ||
@@ -87,3 +87,3 @@ } else { | ||
} | ||
return callback(null, _.uniq(_.each(results, function(value, key) { results[key] = value.substr(0,4) })).sort().reverse()); | ||
return callback(null, _.uniq(_.each(results, function(value, key) { results[key] = value.substr(0, 4); })).sort().reverse()); | ||
}); | ||
@@ -114,3 +114,3 @@ } | ||
if (!s.match(/^\d\d\d\d\-\d\d$/)) { | ||
if (!s.match(/^\d\d\d\d-\d\d$/)) { | ||
return null; | ||
@@ -122,7 +122,37 @@ } | ||
choices: function(callback) { | ||
return self.clone().upcoming(null).toDistinct('startDate', function(err, results) { | ||
return self.clone().skip(0).limit(undefined).upcoming(null).projection({ | ||
startDate: 1, | ||
endDate: 1, | ||
dateType: 1 | ||
}).toArray(function(err, results) { | ||
if (err) { | ||
return callback(err); | ||
} | ||
return callback(null, _.uniq(_.each(results, function(value, key) { results[key] = value.substr(0,7) })).sort().reverse()); | ||
var months = []; | ||
_.each(results, function (result) { | ||
if (!result.endDate || result.dateType === 'single' || | ||
result.startDate === result.endDate) { | ||
months.push(result.startDate.substr(0, 7)); | ||
return; | ||
} | ||
// Strategy credit to https://stackoverflow.com/a/43874192/888550 | ||
var firstMoment = moment(result.startDate); | ||
var lastMoment = moment(result.endDate); | ||
var interim = firstMoment.clone(); | ||
// Disabling rule because `interim` is modified by `.add()`. | ||
// eslint-disable-next-line no-unmodified-loop-condition | ||
while (lastMoment > interim || | ||
interim.format('M') === lastMoment.format('M')) { | ||
months.push(interim.format('YYYY-MM')); | ||
interim.add(1, 'month'); | ||
} | ||
}); | ||
months = _.uniq(months).sort().reverse(); | ||
return callback(null, months); | ||
}); | ||
@@ -132,2 +162,4 @@ } | ||
var fullDateRegex = /^\d\d\d\d-\d\d-\d\d$/; | ||
// Filter by day, in YYYY-MM-DD format. The event must | ||
@@ -154,3 +186,3 @@ // be taking place during that day (it might surround it). | ||
if (!s.match(/^\d\d\d\d\-\d\d\-\d\d$/)) { | ||
if (!s.match(fullDateRegex)) { | ||
return null; | ||
@@ -193,3 +225,3 @@ } | ||
if (!s.match(/^\d\d\d\d\-\d\d\-\d\d$/)) { | ||
if (!s.match(fullDateRegex)) { | ||
return null; | ||
@@ -222,3 +254,3 @@ } | ||
if (!s.match(/^\d\d\d\d\-\d\d\-\d\d$/)) { | ||
if (!s.match(fullDateRegex)) { | ||
return null; | ||
@@ -225,0 +257,0 @@ } |
@@ -15,2 +15,2 @@ module.exports = { | ||
} | ||
} | ||
}; |
{ | ||
"name": "apostrophe-events", | ||
"version": "2.1.4", | ||
"version": "2.1.5", | ||
"description": "Calendar of events for the Apostrophe content management system", | ||
@@ -28,3 +28,6 @@ "main": "index.js", | ||
"qs": "^6.1.0" | ||
}, | ||
"devDependencies": { | ||
"eslint-config-apostrophe": "^3.0.0" | ||
} | ||
} |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
19253
11
442
0
1