feat(pure): computeEstimate with safe division and target-reached handling

This commit is contained in:
dev
2026-06-01 15:30:07 -05:00
parent 545cf65beb
commit faae7702aa
2 changed files with 49 additions and 1 deletions
+13
View File
@@ -23,3 +23,16 @@ export function parseTarget(input) {
const multiplier = suffix ? SUFFIXES[suffix] : 1;
return Math.floor(num * multiplier);
}
export function computeEstimate(current, target, perTrain, perDay) {
const remaining = Math.max(0, target - current);
if (remaining === 0) {
return { remaining: 0, trainsToGo: 0, days: 0, eta: null };
}
const trainsToGo = perTrain > 0 ? Math.ceil(remaining / perTrain) : 0;
const days = perDay > 0 ? Math.ceil(remaining / perDay) : 0;
const eta = days > 0 ? new Date(Date.now() + days * 86_400_000) : null;
return { remaining, trainsToGo, days, eta };
}