mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-15 04:13:47 +00:00
de9a7a87fd
* refactor(project structure): UI * refactor(project structure): extract utilities * refactor(project structure): remove unused * refactor(project structure): electron * refactor(project structure): server refactor: migrate to vitest refactor: monorepo config * refactor: extract application menu * refactor: exit process * refactor: extract tray menu * chore: electron build * Added Seconds in studio clock #282 --------- Co-authored-by: Fabian Posenau <fabian@fphome.de> --------- Co-authored-by: Fabian Posenau <fabian.p99@gmx.de> Co-authored-by: Fabian Posenau <fabian@fphome.de>
34 lines
871 B
TypeScript
34 lines
871 B
TypeScript
import { memo } from 'react';
|
|
|
|
import { formatDisplay, millisToSeconds } from '../../utils/dateConfig';
|
|
|
|
import './TimerDisplay.scss';
|
|
|
|
interface TimerDisplayProps {
|
|
time?: number | null;
|
|
small?: boolean;
|
|
hideZeroHours?: boolean;
|
|
className?: string;
|
|
}
|
|
|
|
/**
|
|
* Displays time in ms in formatted timetag
|
|
* @param props
|
|
* @constructor
|
|
*/
|
|
const TimerDisplay = (props: TimerDisplayProps) => {
|
|
const { time, small, hideZeroHours, className = '' } = props;
|
|
|
|
const display =
|
|
(time === null || typeof time === 'undefined' || isNaN(time))
|
|
? '-- : -- : --'
|
|
: formatDisplay(millisToSeconds(time), hideZeroHours);
|
|
|
|
const isNegative = (time ?? 0) < 0;
|
|
const classes = `timer ${small ? 'timer--small' : ''} ${isNegative ? 'timer--finished' : ''} ${className}`;
|
|
|
|
return <div className={classes}>{display}</div>;
|
|
};
|
|
|
|
export default memo(TimerDisplay);
|