onix-core
Version:
Onix library core
58 lines (53 loc) • 2.12 kB
text/typescript
import padStart from 'lodash/padStart';
import { _ } from '../../i18n';
import { timestampToInterval } from './timestampToInterval';
export const formatTimer = (timestamp: number, short = true, isend?: string): string => {
if (isNaN(timestamp)) {
return _("timer", "empty");
}
const category = short ? "timer" : "datetime";
const interval = timestampToInterval(timestamp);
const result: string[] = [];
if (interval.invert || ((interval.d === 0) && (interval.h === 0) && (interval.i === 0) && (interval.s === 0) && (interval.f === 0))) {
result.push(
isend ?? _("timer", "isend")
);
} else {
if (interval.d > 0) {
result.push(
_(category, "days", { d: interval.d })
);
if (interval.h > 0) {
result.push(
_(category, "hours", { h: interval.h })
);
}
} else {
const f = (interval.h === 0) && (interval.i === 0) && (interval.s < 10) && (interval.f > 0) ? "." + padStart(interval.f.toString(), 3, "0") : "";
if (interval.h > 0) {
result.push(
padStart(interval.h.toString(), 2, "0") + ":" +
padStart(interval.i.toString(), 2, "0") + ":" +
padStart(interval.s.toString(), 2, "0") + f
);
} else if (interval.i > 0) {
result.push(
padStart(interval.i.toString(), 2, "0") + ":" +
padStart(interval.s.toString(), 2, "0") + f
);
} else {
if (f.length > 0) {
result.push(
padStart(interval.s.toString(), 2, "0") + f
);
} else {
result.push(
padStart(interval.i.toString(), 2, "0") + ":" +
padStart(interval.s.toString(), 2, "0") + f
);
}
}
}
}
return result.join(" ");
}