diff --git a/web/src/components/filter/HistoryFilterPopover.tsx b/web/src/components/filter/HistoryFilterPopover.tsx index 90c4e4d4e..4a8390f9e 100644 --- a/web/src/components/filter/HistoryFilterPopover.tsx +++ b/web/src/components/filter/HistoryFilterPopover.tsx @@ -23,6 +23,16 @@ export default function HistoryFilterPopover({ onUpdateFilter, }: HistoryFilterPopoverProps) { const { data: config } = useSWR("config"); + + const [open, setOpen] = useState(false); + const disabledDates = useMemo(() => { + const tomorrow = new Date(); + tomorrow.setHours(tomorrow.getHours() + 24, -1, 0, 0); + const future = new Date(); + future.setFullYear(2032); + return { from: tomorrow, to: future }; + }, []); + const { data: allLabels } = useSWR(["labels"], { revalidateOnFocus: false, }); @@ -42,10 +52,21 @@ export default function HistoryFilterPopover({ const [selectedFilters, setSelectedFilters] = useState({ cameras: filter == undefined ? [] : filter.cameras, labels: filter == undefined ? [] : filter.labels, + before: filter?.before, + after: filter?.after, }); + const dateRange = useMemo(() => { + return selectedFilters?.before == undefined || + selectedFilters?.after == undefined + ? undefined + : { + from: new Date(selectedFilters.after * 1000), + to: new Date(selectedFilters.before * 1000), + }; + }, [selectedFilters]); return ( - + setOpen(open)}> @@ -107,7 +130,9 @@ export default function HistoryFilterPopover({ @@ -155,10 +180,35 @@ export default function HistoryFilterPopover({ - + { + let afterTime = undefined; + if (range?.from != undefined) { + afterTime = range.from.getTime() / 1000; + } + + // need to make sure the day selected for before covers the entire day + let beforeTime = undefined; + if (range?.from != undefined) { + const beforeDate = range.to ?? range.from; + beforeDate.setHours(beforeDate.getHours() + 24, -1, 0, 0); + beforeTime = beforeDate.getTime() / 1000; + } + + setSelectedFilters({ + ...selectedFilters, + after: afterTime, + before: beforeTime, + }); + }} + />