mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-10 09:53:48 +00:00
9a4d659b04
* feat: optional timer seconds
32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import { mts } from '../timeConstants.js';
|
|
|
|
/**
|
|
* another go at simpler string formatting (counters) -- Copied from client code
|
|
* @description Converts seconds to string representing time
|
|
* @param {number | null} milliseconds - time in seconds
|
|
* @param {boolean} [hideZero] - whether to show hours in case its 00
|
|
* @returns {string} String representing absolute time 00:12:02
|
|
*/
|
|
export function formatDisplay(milliseconds: number | null, hideZero = false): string {
|
|
if (typeof milliseconds !== 'number') {
|
|
return hideZero ? '00:00' : '00:00:00';
|
|
}
|
|
|
|
// add an extra 0 if necessary
|
|
const format = (val: number) => `0${Math.floor(val)}`.slice(-2);
|
|
|
|
const s = Math.abs(millisToSeconds(milliseconds));
|
|
const hours = Math.floor((s / 3600) % 24);
|
|
const minutes = Math.floor((s % 3600) / 60);
|
|
|
|
if (hideZero && hours < 1) return [minutes, s % 60].map(format).join(':');
|
|
return [hours, minutes, s % 60].map(format).join(':');
|
|
}
|
|
|
|
const millisToSeconds = (millis: number | null): number => {
|
|
if (millis === null) {
|
|
return 0;
|
|
}
|
|
return millis < 0 ? Math.ceil(millis / mts) : Math.floor(millis / mts);
|
|
};
|