From ce2bb45c55577627a56ba0e6f20501ce4ea3a96a Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Wed, 25 Sep 2024 08:29:44 -0600 Subject: [PATCH] Handle time range in am/pm based on browser --- .../components/filter/SearchFilterGroup.tsx | 30 +++++++++--- web/src/hooks/use-date-utils.ts | 46 +++++++++++++++++++ web/src/types/search.ts | 3 ++ 3 files changed, 72 insertions(+), 7 deletions(-) diff --git a/web/src/components/filter/SearchFilterGroup.tsx b/web/src/components/filter/SearchFilterGroup.tsx index 17d398286..d918981d2 100644 --- a/web/src/components/filter/SearchFilterGroup.tsx +++ b/web/src/components/filter/SearchFilterGroup.tsx @@ -17,6 +17,8 @@ import { SearchFilter, SearchFilters, SearchSource, + DEFAULT_TIME_RANGE_AFTER, + DEFAULT_TIME_RANGE_BEFORE, } from "@/types/search"; import { DateRange } from "react-day-picker"; import { cn } from "@/lib/utils"; @@ -26,6 +28,7 @@ import { MdLabel } from "react-icons/md"; import SearchSourceIcon from "../icons/SearchSourceIcon"; import PlatformAwareDialog from "../overlay/dialog/PlatformAwareDialog"; import { FaArrowRight, FaClock } from "react-icons/fa"; +import { useFormattedHour } from "@/hooks/use-date-utils"; type SearchFilterGroupProps = { className: string; @@ -172,6 +175,7 @@ export default function SearchFilterGroup({ )} {filters.includes("time") && ( onUpdateFilter({ ...filter, time_range }) @@ -395,10 +399,12 @@ export function GeneralFilterContent({ } type TimeRangeFilterButtonProps = { + config?: FrigateConfig; timeRange?: string; updateTimeRange: (range: string | undefined) => void; }; function TimeRangeFilterButton({ + config, timeRange, updateTimeRange, }: TimeRangeFilterButtonProps) { @@ -408,7 +414,7 @@ function TimeRangeFilterButton({ const [afterHour, beforeHour] = useMemo(() => { if (!timeRange || !timeRange.includes(",")) { - return ["00:00", "24:00"]; + return [DEFAULT_TIME_RANGE_AFTER, DEFAULT_TIME_RANGE_BEFORE]; } return timeRange.split(","); @@ -417,6 +423,13 @@ function TimeRangeFilterButton({ const [selectedAfterHour, setSelectedAfterHour] = useState(afterHour); const [selectedBeforeHour, setSelectedBeforeHour] = useState(beforeHour); + // format based on locale + + const formattedAfter = useFormattedHour(config, afterHour); + const formattedBefore = useFormattedHour(config, beforeHour); + const formattedSelectedAfter = useFormattedHour(config, selectedAfterHour); + const formattedSelectedBefore = useFormattedHour(config, selectedBeforeHour); + const trigger = ( ); @@ -456,7 +469,7 @@ function TimeRangeFilterButton({ setEndOpen(false); }} > - {selectedAfterHour} + {formattedSelectedAfter} @@ -493,7 +506,7 @@ function TimeRangeFilterButton({ setStartOpen(false); }} > - {selectedBeforeHour} + {formattedSelectedBefore} @@ -519,7 +532,10 @@ function TimeRangeFilterButton({