import { IoPencil } from 'react-icons/io5'; import { MaybeNumber, OntimeEvent } from 'ontime-types'; import { getExpectedStart } from 'ontime-utils'; import Button from '../../common/components/buttons/Button'; import { useFadeOutOnInactivity } from '../../common/hooks/useFadeOutOnInactivity'; import { useExpectedStartData } from '../../common/hooks/useSocket'; import useReport from '../../common/hooks-query/useReport'; import { ExtendedEntry } from '../../common/utils/rundownMetadata'; import { cx } from '../../common/utils/styleUtils'; import SuperscriptTime from '../../features/viewers/common/superscript-time/SuperscriptTime'; import { getPropertyValue } from '../../features/viewers/common/viewUtils'; import { useCountdownOptions } from './countdown.options'; import { useSubscriptionDisplayData } from './countdown.utils'; import { ScheduleTime } from './CountdownSubscriptions'; import './SingleEventCountdown.scss'; interface SingleEventCountdownProps { subscribedEvent: ExtendedEntry; goToEditMode: () => void; } export default function SingleEventCountdown({ subscribedEvent, goToEditMode }: SingleEventCountdownProps) { const { secondarySource, showExpected } = useCountdownOptions(); const showFab = useFadeOutOnInactivity(true); const { data: reportData } = useReport(); const { offset, currentDay, actualStart, plannedStart, mode } = useExpectedStartData(); const { totalGap, isLinkedToLoaded } = subscribedEvent; const expectedStart = getExpectedStart(subscribedEvent, { currentDay, totalGap, actualStart, plannedStart, isLinkedToLoaded, offset, mode, }); const { endedAt } = reportData[subscribedEvent.id] ?? { endedAt: null }; const countdownEvent = { ...subscribedEvent, expectedStart, endedAt }; const title = subscribedEvent.title.length ? subscribedEvent.title : ' '; // insert utf-8 empty space to avoid the line collapsing const secondaryData = getPropertyValue(subscribedEvent, secondarySource); return (
{title} {secondaryData &&
{secondaryData}
}
); } interface SubscriptionStatusProps { event: ExtendedEntry & { endedAt: MaybeNumber; expectedStart: number }; } function SubscriptionStatus({ event }: SubscriptionStatusProps) { const { status, statusDisplay, timeDisplay } = useSubscriptionDisplayData(event); return ( <>
{statusDisplay}
{status === 'done' ? ( ) : (
{timeDisplay}
)} ); }