diff --git a/apps/client/src/features/control/message/TimerPreview.tsx b/apps/client/src/features/control/message/TimerPreview.tsx index e0224a8ab..14c33f664 100644 --- a/apps/client/src/features/control/message/TimerPreview.tsx +++ b/apps/client/src/features/control/message/TimerPreview.tsx @@ -25,6 +25,7 @@ export default function TimerPreview() { if (showTimerMessage) return 'Message'; if (phase === TimerPhase.Pending) return 'Standby to start'; if (phase === TimerPhase.Overtime && data.endMessage) return 'Custom end message'; + if (timerType === TimerType.TimeToEnd) return 'Time to end'; return 'Timer'; })(); diff --git a/apps/client/src/features/rundown/event-block/EventBlockInner.tsx b/apps/client/src/features/rundown/event-block/EventBlockInner.tsx index 5e353b063..7347d887e 100644 --- a/apps/client/src/features/rundown/event-block/EventBlockInner.tsx +++ b/apps/client/src/features/rundown/event-block/EventBlockInner.tsx @@ -90,6 +90,7 @@ const EventBlockInner = (props: EventBlockInnerProps) => { delay={delay} timeStrategy={timeStrategy} linkStart={linkStart} + timerType={timerType} />
diff --git a/apps/client/src/features/rundown/event-editor/composite/EventEditorTimes.tsx b/apps/client/src/features/rundown/event-editor/composite/EventEditorTimes.tsx index 147450dcb..5d6dd0bfb 100644 --- a/apps/client/src/features/rundown/event-editor/composite/EventEditorTimes.tsx +++ b/apps/client/src/features/rundown/event-editor/composite/EventEditorTimes.tsx @@ -82,6 +82,7 @@ const EventEditorTimes = (props: EventEditorTimesProps) => { timeStrategy={timeStrategy} linkStart={linkStart} delay={delay} + timerType={timerType} />
{delayLabel}
diff --git a/apps/client/src/features/rundown/time-input-flow/TimeInputFlow.tsx b/apps/client/src/features/rundown/time-input-flow/TimeInputFlow.tsx index fb69582dd..b68a43978 100644 --- a/apps/client/src/features/rundown/time-input-flow/TimeInputFlow.tsx +++ b/apps/client/src/features/rundown/time-input-flow/TimeInputFlow.tsx @@ -5,7 +5,7 @@ import { IoLink } from '@react-icons/all-files/io5/IoLink'; import { IoLockClosed } from '@react-icons/all-files/io5/IoLockClosed'; import { IoLockOpenOutline } from '@react-icons/all-files/io5/IoLockOpenOutline'; import { IoUnlink } from '@react-icons/all-files/io5/IoUnlink'; -import { MaybeString, TimeStrategy } from 'ontime-types'; +import { MaybeString, TimerType, TimeStrategy } from 'ontime-types'; import TimeInputWithButton from '../../../common/components/input/time-input/TimeInputWithButton'; import { useEventAction } from '../../../common/hooks/useEventAction'; @@ -22,12 +22,13 @@ interface EventBlockTimerProps { timeStrategy: TimeStrategy; linkStart: MaybeString; delay: number; + timerType: TimerType; } type TimeActions = 'timeStart' | 'timeEnd' | 'duration'; const TimeInputFlow = (props: EventBlockTimerProps) => { - const { eventId, timeStart, timeEnd, duration, timeStrategy, linkStart, delay } = props; + const { eventId, timeStart, timeEnd, duration, timeStrategy, linkStart, delay, timerType } = props; const { updateEvent, updateTimer } = useEventAction(); // In sync with EventEditorTimes @@ -43,7 +44,15 @@ const TimeInputFlow = (props: EventBlockTimerProps) => { updateEvent({ id: eventId, linkStart: doLink ? 'true' : null }); }; - const overMidnight = timeStart > timeEnd; + const warnings = []; + if (timeStart > timeEnd) { + warnings.push('Over midnight'); + } + + if (timerType === TimerType.TimeToEnd) { + warnings.push('Time to end'); + } + const hasDelay = delay !== 0; const isLockedEnd = timeStrategy === TimeStrategy.LockEnd; @@ -110,9 +119,9 @@ const TimeInputFlow = (props: EventBlockTimerProps) => { - {overMidnight && ( + {warnings.length > 0 && (
- +