import { Tooltip } from '@chakra-ui/react'; import { Playback } from 'ontime-types'; import { millisToString } from 'ontime-utils'; import TimerDisplay from '../../../../common/components/timer-display/TimerDisplay'; import { setPlayback, useTimer } from '../../../../common/hooks/useSocket'; import { millisToMinutes, millisToSeconds } from '../../../../common/utils/dateConfig'; import { tooltipDelayMid } from '../../../../ontimeConfig'; import TapButton from '../tap-button/TapButton'; import style from './PlaybackTimer.module.scss'; interface PlaybackTimerProps { playback: Playback; } export default function PlaybackTimer(props: PlaybackTimerProps) { const { playback } = props; const timer = useTimer(); // TODO: checkout typescript in utilities const started = millisToString(timer.startedAt); const finish = millisToString(timer.expectedFinish); const isRolling = playback === Playback.Roll; const isStopped = playback === Playback.Stop; const isWaiting = timer.secondaryTimer !== null && timer.secondaryTimer > 0 && timer.current === null; const disableButtons = isStopped || isRolling; const isOvertime = timer.current !== null && timer.current < 0; const hasAddedTime = Boolean(timer.addedTime); const rollLabel = isRolling ? 'Roll mode active' : ''; const resolveAddedTimeLabel = () => { function resolveClosestUnit(ms: number) { if (ms < 6000) { return `${millisToSeconds(ms)} seconds`; } else if (ms < 12000) { return '1 minute'; } else { return `${millisToMinutes(ms)} minutes`; } } if (timer.addedTime > 0) { return `Added ${resolveClosestUnit(timer.addedTime)}`; } if (timer.addedTime < 0) { return `Removed ${resolveClosestUnit(timer.addedTime)}`; } return ''; }; const addedTimeLabel = resolveAddedTimeLabel(); return (