Skip to content

Commit a228aef

Browse files
olzzonanteeek
authored andcommitted
feat: directors screen keep showing countdown if first part is untimed
1 parent 6f0bc7e commit a228aef

File tree

1 file changed

+91
-75
lines changed

1 file changed

+91
-75
lines changed

packages/webui/src/client/ui/ClockView/DirectorScreen.tsx

Lines changed: 91 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,12 @@ function DirectorScreenRender({
367367

368368
const overUnderClock = getPlaylistTimingDiff(playlist, timingDurations) ?? 0
369369

370+
// Show countdown if it is the first segment and the current part is untimed:
371+
const currentSegmentIsFirst = currentSegment?._rank === 0
372+
const isFirstPieceAndNoDuration =
373+
(currentSegmentIsFirst && currentPartInstance?.instance.part.untimed) ||
374+
(currentSegment === undefined && nextPartInstance?.instance.part.untimed)
375+
370376
return (
371377
<div className="director-screen">
372378
<div className="director-screen__top">
@@ -405,91 +411,101 @@ function DirectorScreenRender({
405411
// Current Part:
406412
}
407413
<div className="director-screen__body__part">
408-
<div
409-
className={ClassNames('director-screen__body__segment-name', {
410-
live: currentSegment !== undefined,
411-
})}
412-
>
413-
<AdjustLabelFit
414-
label={currentSegment?.name || ''}
415-
width={'80vw'}
416-
fontFamily="Roboto Flex"
417-
fontSize="0.9em"
418-
minFontWidth={70}
419-
defaultWidth={100}
420-
defaultOpticalSize={100}
421-
useLetterSpacing={false}
422-
hardCutText={true}
423-
/>
424-
{playlist.currentPartInfo?.partInstanceId ? (
425-
<span className="director-screen__body__segment__countdown">
426-
<CurrentPartOrSegmentRemaining
427-
currentPartInstanceId={playlist.currentPartInfo?.partInstanceId || null}
428-
heavyClassName="overtime"
429-
preferSegmentTime={true}
430-
/>
431-
</span>
432-
) : null}
433-
</div>
434-
{currentPartInstance && currentShowStyleBaseId ? (
414+
{!isFirstPieceAndNoDuration ? (
435415
<>
436-
<div className="director-screen__body__part__piece-icon">
437-
<PieceIconContainer
438-
partInstanceId={currentPartInstance.instance._id}
439-
showStyleBaseId={currentShowStyleBaseId}
440-
rundownIds={rundownIds}
441-
playlistActivationId={playlist?.activationId}
416+
<div
417+
className={ClassNames('director-screen__body__segment-name', {
418+
live: currentSegment !== undefined,
419+
})}
420+
>
421+
<AdjustLabelFit
422+
label={currentSegment?.name || ''}
423+
width={'80vw'}
424+
fontFamily="Roboto Flex"
425+
fontSize="0.9em"
426+
minFontWidth={70}
427+
defaultWidth={100}
428+
defaultOpticalSize={100}
429+
useLetterSpacing={false}
430+
hardCutText={true}
442431
/>
432+
{playlist.currentPartInfo?.partInstanceId ? (
433+
<span className="director-screen__body__segment__countdown">
434+
<CurrentPartOrSegmentRemaining
435+
currentPartInstanceId={playlist.currentPartInfo?.partInstanceId || null}
436+
heavyClassName="overtime"
437+
preferSegmentTime={true}
438+
/>
439+
</span>
440+
) : null}
443441
</div>
444-
<div className="director-screen__body__part__piece-content">
445-
<div className="director-screen__body__part__piece-name">
446-
<PieceNameContainer
447-
partName={currentPartInstance.instance.part.title}
448-
partInstanceId={currentPartInstance.instance._id}
449-
showStyleBaseId={currentShowStyleBaseId}
450-
rundownIds={rundownIds}
451-
playlistActivationId={playlist?.activationId}
452-
autowidth={{
453-
label: '',
454-
width: '90vw',
455-
fontFamily: 'Roboto Flex',
456-
fontSize: '1.5em',
457-
minFontWidth: 55,
458-
defaultWidth: 100,
459-
useLetterSpacing: false,
460-
defaultOpticalSize: 100,
461-
}}
462-
/>
463-
</div>
464-
<div className="director-screen__body__part__piece-countdown">
465-
<CurrentPartOrSegmentRemaining
466-
currentPartInstanceId={playlist.currentPartInfo?.partInstanceId ?? null}
467-
heavyClassName="overtime"
468-
/>
469-
<span className="auto-next-status">
470-
<AutoNextStatus />
471-
</span>{' '}
472-
<span className="freeze-counter">
473-
<PieceFreezeContainer
442+
443+
{currentPartInstance && currentShowStyleBaseId && (
444+
<>
445+
<div className="director-screen__body__part__piece-icon">
446+
<PieceIconContainer
474447
partInstanceId={currentPartInstance.instance._id}
475448
showStyleBaseId={currentShowStyleBaseId}
476449
rundownIds={rundownIds}
477-
partAutoNext={currentPartInstance.instance.part.autoNext || false}
478-
partExpectedDuration={calculatePartInstanceExpectedDurationWithTransition(
479-
currentPartInstance.instance
480-
)}
481-
partStartedPlayback={currentPartInstance.instance.timings?.plannedStartedPlayback}
482450
playlistActivationId={playlist?.activationId}
483451
/>
484-
</span>
452+
</div>
453+
<div className="director-screen__body__part__piece-content">
454+
<div className="director-screen__body__part__piece-name">
455+
<PieceNameContainer
456+
partName={currentPartInstance.instance.part.title}
457+
partInstanceId={currentPartInstance.instance._id}
458+
showStyleBaseId={currentShowStyleBaseId}
459+
rundownIds={rundownIds}
460+
playlistActivationId={playlist?.activationId}
461+
autowidth={{
462+
label: '',
463+
width: '90vw',
464+
fontFamily: 'Roboto Flex',
465+
fontSize: '1.5em',
466+
minFontWidth: 55,
467+
defaultWidth: 100,
468+
useLetterSpacing: false,
469+
defaultOpticalSize: 100,
470+
}}
471+
/>
472+
</div>
473+
<div className="director-screen__body__part__piece-countdown">
474+
<CurrentPartOrSegmentRemaining
475+
currentPartInstanceId={playlist.currentPartInfo?.partInstanceId ?? null}
476+
heavyClassName="overtime"
477+
/>
478+
<span className="auto-next-status">
479+
<AutoNextStatus />
480+
</span>{' '}
481+
<span className="freeze-counter">
482+
<PieceFreezeContainer
483+
partInstanceId={currentPartInstance.instance._id}
484+
showStyleBaseId={currentShowStyleBaseId}
485+
rundownIds={rundownIds}
486+
partAutoNext={currentPartInstance.instance.part.autoNext || false}
487+
partExpectedDuration={calculatePartInstanceExpectedDurationWithTransition(
488+
currentPartInstance.instance
489+
)}
490+
partStartedPlayback={currentPartInstance.instance.timings?.plannedStartedPlayback}
491+
playlistActivationId={playlist?.activationId}
492+
/>
493+
</span>
494+
</div>
495+
</div>
496+
</>
497+
)}
498+
</>
499+
) : (
500+
expectedStart && (
501+
<div className="director-screen__body__part__timeto-content">
502+
<div className="director-screen__body__part__timeto-countdown">
503+
<Timediff time={expectedStart - getCurrentTime()} />
485504
</div>
505+
<div className="director-screen__body__part__timeto-name">Time to planned start</div>
486506
</div>
487-
</>
488-
) : expectedStart ? (
489-
<div className="director-screen__body__rundown-countdown">
490-
<Timediff time={expectedStart - getCurrentTime()} />
491-
</div>
492-
) : null}
507+
)
508+
)}
493509
</div>
494510
{
495511
// Next Part:

0 commit comments

Comments
 (0)