Browse Source

Add feature: Add due timeline into Calendar view

Sam X. Chen 5 năm trước cách đây
mục cha
commit
e5f0dd7dd8
1 tập tin đã thay đổi với 27 bổ sung7 xóa
  1. 27 7
      models/cards.js

+ 27 - 7
models/cards.js

@@ -1579,18 +1579,38 @@ const findDueCards = days => {
   const now = new Date(),
   const now = new Date(),
     aday = 3600 * 24 * 1e3,
     aday = 3600 * 24 * 1e3,
     then = day => new Date(now.setHours(0, 0, 0, 0) + day * aday);
     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(
 const addCronJob = _.debounce(
   Meteor.bindEnvironment(function findDueCardsDebounced() {
   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;
       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 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 defaultitvl = 8; // default every morning at 8am, if the passed env variable has parsing error use default
     const itvl = parseInt(notifyitvl, 10) || defaultitvl;
     const itvl = parseInt(notifyitvl, 10) || defaultitvl;