Add feature: Add due timeline into Calendar view

This commit is contained in:
Sam X. Chen 2019-09-26 12:20:14 -04:00
parent 4f34adbd44
commit e5f0dd7dd8

View file

@ -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;