aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/shared/routine-metrics.test.ts4
-rw-r--r--src/lib/shared/routine-metrics.ts4
2 files changed, 5 insertions, 3 deletions
diff --git a/src/lib/shared/routine-metrics.test.ts b/src/lib/shared/routine-metrics.test.ts
index 1df39ab..ccc06ba 100644
--- a/src/lib/shared/routine-metrics.test.ts
+++ b/src/lib/shared/routine-metrics.test.ts
@@ -18,10 +18,10 @@ const routine = {
};
describe('computeRoutineState', () => {
- it('is ok and healthy before the due date', () => {
+ it('is due when never done, even before the due date', () => {
const now = Date.parse(CREATED) + 3 * DAY_MS;
const state = computeRoutineState(routine, [], now);
- expect(state.status).toBe('ok');
+ expect(state.status).toBe('due');
expect(state.overdueDays).toBe(0);
expect(state.health).toBe(100);
expect(state.dueAt).toBe(
diff --git a/src/lib/shared/routine-metrics.ts b/src/lib/shared/routine-metrics.ts
index 59413c2..4af989d 100644
--- a/src/lib/shared/routine-metrics.ts
+++ b/src/lib/shared/routine-metrics.ts
@@ -64,8 +64,10 @@ export function computeRoutineState(
// Buckets on overdue time in units of the routine's own frequency:
// not due / due now / late (half a period overdue) / very late (a full
// period overdue — a weekly routine two weeks old lands here).
+ // A routine that was never done is always at least due: there is
+ // something to do, even right after creation.
const status: RoutineStatus =
- rawRatio < 0
+ rawRatio < 0 && lastDoneMs !== null
? 'ok'
: overdueRatio < 0.5
? 'due'