diff options
author | Sam X. Chen <sam.xi.chen@gmail.com> | 2019-09-26 12:20:14 -0400 |
---|---|---|
committer | Sam X. Chen <sam.xi.chen@gmail.com> | 2019-09-26 12:20:14 -0400 |
commit | e5f0dd7dd8a3629416c413381993fb791f314311 (patch) | |
tree | 19299e2b12d735a62ed4ad1d1f1fb2690f3f8e5b /models | |
parent | 4f34adbd44c559b3807d5205fe56be34cf4813d1 (diff) | |
download | wekan-e5f0dd7dd8a3629416c413381993fb791f314311.tar.gz wekan-e5f0dd7dd8a3629416c413381993fb791f314311.tar.bz2 wekan-e5f0dd7dd8a3629416c413381993fb791f314311.zip |
Add feature: Add due timeline into Calendar view
Diffstat (limited to 'models')
-rw-r--r-- | models/cards.js | 34 |
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; |