Skip to content

Commit 9892421

Browse files
committed
Refactor UI for new timer style
1 parent 884cb66 commit 9892421

File tree

1 file changed

+22
-26
lines changed

1 file changed

+22
-26
lines changed

packages/webui/src/client/ui/RundownView/RundownHeader/RundownHeaderTimers.tsx

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ function SingleTimer({ timer }: ISingleTimerProps) {
3333

3434
const now = Date.now()
3535

36-
const isRunning = timer.mode!.type === 'countdown' && timer.mode!.pauseTime === null
36+
const isRunning = timer.state !== null && !timer.state.paused
3737

38-
const { diff, isNegative, isFreeRun } = calculateDiff(timer, now)
38+
const diff = calculateDiff(timer, now)
3939
const timeStr = RundownUtils.formatDiffToTimecode(Math.abs(diff), false, true, true, false, true)
4040
const parts = timeStr.split(':')
4141

42-
const timerSign = isFreeRun ? '+' : isNegative ? '-' : '+'
42+
const timerSign = diff >= 0 ? '+' : '-'
4343

4444
return (
4545
<div
@@ -51,7 +51,7 @@ function SingleTimer({ timer }: ISingleTimerProps) {
5151
'timing__header_t-timers__timer__isCountingDown': timer.mode!.type === 'countdown',
5252
'timing__header_t-timers__timer__isCountingUp': timer.mode!.type === 'countdown',
5353
'timing__header_t-timers__timer__isComplete':
54-
timer.mode!.type === 'countdown' && timer.mode!.pauseTime !== null,
54+
timer.mode!.type === 'countdown' && timer.state !== null && timer.state.paused,
5555
})}
5656
>
5757
<span className="timing__header_t-timers__timer__label">{timer.label}</span>
@@ -74,27 +74,23 @@ function SingleTimer({ timer }: ISingleTimerProps) {
7474
)
7575
}
7676

77-
function calculateDiff(
78-
timer: RundownTTimer,
79-
now: number
80-
): {
81-
diff: number
82-
isNegative: boolean
83-
isFreeRun: boolean
84-
} {
85-
if (timer.mode!.type === 'freeRun') {
86-
const startTime = timer.mode!.startTime
87-
const diff = now - startTime
88-
return { diff, isNegative: false, isFreeRun: true }
89-
} else if (timer.mode!.type === 'countdown') {
90-
const endTime = timer.mode!.startTime + timer.mode!.duration
91-
let diff = endTime - now
92-
93-
if (timer.mode!.stopAtZero && diff < 0) {
94-
diff = 0
95-
}
96-
97-
return { diff, isNegative: diff >= 0, isFreeRun: false }
77+
function calculateDiff(timer: RundownTTimer, now: number): number {
78+
if (!timer.state) {
79+
return 0
9880
}
99-
return { diff: 0, isNegative: false, isFreeRun: false }
81+
82+
// Get current time: either frozen duration or calculated from zeroTime
83+
const currentTime = timer.state.paused ? timer.state.duration : timer.state.zeroTime - now
84+
85+
// Free run counts up, so negate to get positive elapsed time
86+
if (timer.mode?.type === 'freeRun') {
87+
return -currentTime
88+
}
89+
90+
// Apply stopAtZero if configured
91+
if (timer.mode?.stopAtZero && currentTime < 0) {
92+
return 0
93+
}
94+
95+
return currentTime
10096
}

0 commit comments

Comments
 (0)