import { useMemo } from 'react'; import { Playback } from 'ontime-types'; import { millisToString } from 'ontime-utils'; import PlaybackIcon from '../../../common/components/playback-icon/PlaybackIcon'; import { useTimer } from '../../../common/hooks/useSocket'; import { cx } from '../../../common/utils/styleUtils'; import { formatTime } from '../../../common/utils/time'; import styles from './StatusBar.module.scss'; interface StatusBarTimersProps { projectTitle: string; playback: Playback; selectedEventId: string | null; firstStart?: number; firstId?: string; lastEnd?: number; lastId?: string; } export default function StatusBarTimers(props: StatusBarTimersProps) { const { projectTitle, playback, selectedEventId, firstStart, firstId, lastEnd, lastId } = props; const timer = useTimer(); const getTimeStart = () => { if (firstStart === undefined) { return '...'; } if (selectedEventId) { if (firstId === selectedEventId) { return millisToString(timer.expectedFinish); } } return millisToString(firstStart); }; const getTimeEnd = () => { if (lastEnd === undefined) { return '...'; } if (selectedEventId) { if (lastId === selectedEventId) { return millisToString(timer.expectedFinish); } } return millisToString(lastEnd); }; const PlaybackIconComponent = useMemo(() => { const isPlaying = playback === Playback.Play || playback === Playback.Roll; const classes = cx([styles.playbackIcon, isPlaying ? styles.active : null]); return ; }, [playback]); // use user defined format const timeNow = formatTime(timer.clock, { showSeconds: true, }); const runningTime = millisToString(timer.current); const elapsedTime = millisToString(timer.elapsed); return (
{PlaybackIconComponent}
Time now {timeNow}
Elapsed time {elapsedTime}
Running timer {runningTime}
{projectTitle}
Scheduled start {getTimeStart()}
Scheduled end {getTimeEnd()}
); }