mirror of
https://github.com/ankitects/anki.git
synced 2026-01-13 14:03:55 -05:00
Use a simpler approach
This commit is contained in:
parent
950f26c16b
commit
53f83d9cd3
1 changed files with 14 additions and 18 deletions
|
|
@ -36,25 +36,21 @@ export function unitName(unit: TimespanUnit): string {
|
|||
}
|
||||
}
|
||||
|
||||
export function naturalUnit(secs: number, maxUnit: TimespanUnit = TimespanUnit.Years): TimespanUnit {
|
||||
export function naturalUnit(secs: number): TimespanUnit {
|
||||
secs = Math.abs(secs);
|
||||
const thresholds = [
|
||||
{ unit: TimespanUnit.Years, min: YEAR },
|
||||
{ unit: TimespanUnit.Months, min: MONTH },
|
||||
{ unit: TimespanUnit.Days, min: DAY },
|
||||
{ unit: TimespanUnit.Hours, min: HOUR },
|
||||
{ unit: TimespanUnit.Minutes, min: MINUTE },
|
||||
{ unit: TimespanUnit.Seconds, min: 0 },
|
||||
];
|
||||
for (const { unit, min } of thresholds) {
|
||||
if (unit > maxUnit) {
|
||||
continue;
|
||||
}
|
||||
if (secs >= min) {
|
||||
return unit;
|
||||
}
|
||||
if (secs < MINUTE) {
|
||||
return TimespanUnit.Seconds;
|
||||
} else if (secs < HOUR) {
|
||||
return TimespanUnit.Minutes;
|
||||
} else if (secs < DAY) {
|
||||
return TimespanUnit.Hours;
|
||||
} else if (secs < MONTH) {
|
||||
return TimespanUnit.Days;
|
||||
} else if (secs < YEAR) {
|
||||
return TimespanUnit.Months;
|
||||
} else {
|
||||
return TimespanUnit.Years;
|
||||
}
|
||||
return TimespanUnit.Seconds;
|
||||
}
|
||||
|
||||
/** Number of seconds in a given unit. */
|
||||
|
|
@ -156,7 +152,7 @@ export function timeSpan(
|
|||
precise = true,
|
||||
maxUnit: TimespanUnit = TimespanUnit.Years,
|
||||
): string {
|
||||
const unit = naturalUnit(seconds, maxUnit);
|
||||
const unit = Math.min(naturalUnit(seconds), maxUnit);
|
||||
let amount = unitAmount(unit, seconds);
|
||||
if (!precise && unit < TimespanUnit.Months) {
|
||||
amount = Math.round(amount);
|
||||
|
|
|
|||
Loading…
Reference in a new issue