import { FrigateConfig } from "@/types/frigateConfig"; import { formatUnixTimestampToDateTime } from "@/utils/dateUtil"; import { useMemo } from "react"; import useSWR from "swr"; type MinimapSegmentProps = { isFirstSegmentInMinimap: boolean; isLastSegmentInMinimap: boolean; alignedMinimapStartTime: number; alignedMinimapEndTime: number; firstMinimapSegmentRef: React.MutableRefObject; dense: boolean; }; type TickSegmentProps = { timestamp: Date; timestampSpread: number; }; type TimestampSegmentProps = { isFirstSegmentInMinimap: boolean; isLastSegmentInMinimap: boolean; timestamp: Date; timestampSpread: number; segmentKey: number; }; export function MinimapBounds({ isFirstSegmentInMinimap, isLastSegmentInMinimap, alignedMinimapStartTime, alignedMinimapEndTime, firstMinimapSegmentRef, dense, }: MinimapSegmentProps) { const { data: config } = useSWR("config"); return ( <> {isFirstSegmentInMinimap && (
{formatUnixTimestampToDateTime(alignedMinimapStartTime, { timezone: config?.ui.timezone, strftime_fmt: !dense ? `%b %d, ${config?.ui.time_format == "24hour" ? "%H:%M" : "%I:%M %p"}` : `${config?.ui.time_format == "24hour" ? "%H:%M" : "%I:%M %p"}`, })}
)} {isLastSegmentInMinimap && (
{formatUnixTimestampToDateTime(alignedMinimapEndTime, { timezone: config?.ui.timezone, strftime_fmt: !dense ? `%b %d, ${config?.ui.time_format == "24hour" ? "%H:%M" : "%I:%M %p"}` : `${config?.ui.time_format == "24hour" ? "%H:%M" : "%I:%M %p"}`, })}
)} ); } export function Tick({ timestamp, timestampSpread }: TickSegmentProps) { return (
); } export function Timestamp({ isFirstSegmentInMinimap, isLastSegmentInMinimap, timestamp, timestampSpread, segmentKey, }: TimestampSegmentProps) { const { data: config } = useSWR("config"); const formattedTimestamp = useMemo(() => { if ( !( timestamp.getMinutes() % timestampSpread === 0 && timestamp.getSeconds() === 0 ) ) { return undefined; } return formatUnixTimestampToDateTime(timestamp.getTime() / 1000, { timezone: config?.ui.timezone, strftime_fmt: config?.ui.time_format == "24hour" ? "%H:%M" : "%I:%M %p", }); }, [config, timestamp, timestampSpread]); return (
{!isFirstSegmentInMinimap && !isLastSegmentInMinimap && (
{formattedTimestamp}
)}
); }