summaryrefslogtreecommitdiffstats
path: root/models/cards.js
diff options
context:
space:
mode:
authorSam X. Chen <sam.xi.chen@gmail.com>2019-09-26 12:20:14 -0400
committerSam X. Chen <sam.xi.chen@gmail.com>2019-09-26 12:20:14 -0400
commite5f0dd7dd8a3629416c413381993fb791f314311 (patch)
tree19299e2b12d735a62ed4ad1d1f1fb2690f3f8e5b /models/cards.js
parent4f34adbd44c559b3807d5205fe56be34cf4813d1 (diff)
downloadwekan-e5f0dd7dd8a3629416c413381993fb791f314311.tar.gz
wekan-e5f0dd7dd8a3629416c413381993fb791f314311.tar.bz2
wekan-e5f0dd7dd8a3629416c413381993fb791f314311.zip
Add feature: Add due timeline into Calendar view
Diffstat (limited to 'models/cards.js')
-rw-r--r--models/cards.js34
1 files changed, 27 insertions, 7 deletions
diff --git a/models/cards.js b/models/cards.js
index d30baaf1..8356b5f9 100644
--- a/models/cards.js
+++ b/models/cards.js
@@ -1579,18 +1579,38 @@ const findDueCards = days => {
const now = new Date(),
aday = 3600 * 24 * 1e3,
then = day => new Date(now.setHours(0, 0, 0, 0) + day * aday);
- seekDue(then(1), then(days), 'almostdue');
- seekDue(then(0), then(1), 'duenow');
- seekDue(then(-days), now, 'pastdue');
+ if (!days) return;
+ if (!days.map) days = [days];
+ days.map(day => {
+ let args = [];
+ if (day == 0) {
+ args = [then(0), then(1), 'duenow'];
+ } else if (day > 0) {
+ args = [then(1), then(day), 'almostdue'];
+ } else {
+ args = [then(day), now, 'pastdue'];
+ }
+ seekDue.apply(null, args);
+ });
};
const addCronJob = _.debounce(
Meteor.bindEnvironment(function findDueCardsDebounced() {
- const notifydays =
- parseInt(process.env.NOTIFY_DUE_DAYS_BEFORE_AND_AFTER, 10) || 2; // default as 2 days before and after
- if (!(notifydays > 0 && notifydays < 15)) {
- // notifying due is disabled
+ const envValue = process.env.NOTIFY_DUE_DAYS_BEFORE_AND_AFTER;
+ if (!envValue) {
return;
}
+ const notifydays = envValue
+ .split(',')
+ .map(value => {
+ const iValue = parseInt(value, 10);
+ if (!(iValue > 0 && iValue < 15)) {
+ // notifying due is disabled
+ return false;
+ } else {
+ return iValue;
+ }
+ })
+ .filter(Boolean);
const notifyitvl = process.env.NOTIFY_DUE_AT_HOUR_OF_DAY; //passed in the itvl has to be a number standing for the hour of current time
const defaultitvl = 8; // default every morning at 8am, if the passed env variable has parsing error use default
const itvl = parseInt(notifyitvl, 10) || defaultitvl;