diff --git a/web/src/components/filter/ReviewFilterGroup.tsx b/web/src/components/filter/ReviewFilterGroup.tsx index bd05c42b2..23d8ac61c 100644 --- a/web/src/components/filter/ReviewFilterGroup.tsx +++ b/web/src/components/filter/ReviewFilterGroup.tsx @@ -239,6 +239,7 @@ export default function ReviewFilterGroup({ currentSeverity={currentSeverity} reviewSummary={reviewSummary} allLabels={allLabels} + allZones={allZones} onUpdateFilter={onUpdateFilter} // not applicable as exports are not used camera="" diff --git a/web/src/components/overlay/MobileReviewSettingsDrawer.tsx b/web/src/components/overlay/MobileReviewSettingsDrawer.tsx index a99636c2e..716f19b9c 100644 --- a/web/src/components/overlay/MobileReviewSettingsDrawer.tsx +++ b/web/src/components/overlay/MobileReviewSettingsDrawer.tsx @@ -36,6 +36,7 @@ type MobileReviewSettingsDrawerProps = { mode: ExportMode; reviewSummary?: ReviewSummary; allLabels: string[]; + allZones: string[]; onUpdateFilter: (filter: ReviewFilter) => void; setRange: (range: TimeRange | undefined) => void; setMode: (mode: ExportMode) => void; @@ -51,6 +52,7 @@ export default function MobileReviewSettingsDrawer({ mode, reviewSummary, allLabels, + allZones, onUpdateFilter, setRange, setMode, @@ -104,6 +106,9 @@ export default function MobileReviewSettingsDrawer({ const [currentLabels, setCurrentLabels] = useState( filter?.labels, ); + const [currentZones, setCurrentZones] = useState( + filter?.zones, + ); if (!isMobile) { return; @@ -222,7 +227,7 @@ export default function MobileReviewSettingsDrawer({ ); } else if (drawerMode == "filter") { content = ( -
+
+ onUpdateFilter({ ...filter, zones: newZones }) + } setShowAll={(showAll) => { onUpdateFilter({ ...filter, showAll }); }} diff --git a/web/src/views/events/RecordingView.tsx b/web/src/views/events/RecordingView.tsx index 10be536a8..574a2b612 100644 --- a/web/src/views/events/RecordingView.tsx +++ b/web/src/views/events/RecordingView.tsx @@ -111,7 +111,7 @@ export function RecordingView({ () => chunkedTimeRange[selectedRangeIdx], [selectedRangeIdx, chunkedTimeRange], ); - const reviewLabels = useMemo(() => { + const reviewFilterList = useMemo(() => { const uniqueLabels = new Set(); reviewItems?.forEach((rev) => { @@ -121,7 +121,13 @@ export function RecordingView({ rev.data.audio.forEach((aud) => uniqueLabels.add(aud)); }); - return [...uniqueLabels]; + const uniqueZones = new Set(); + + reviewItems?.forEach((rev) => { + rev.data.zones.forEach((zone) => uniqueZones.add(zone)); + }); + + return { labels: [...uniqueLabels], zones: [...uniqueZones] }; }, [reviewItems]); // export @@ -391,7 +397,7 @@ export function RecordingView({ reviewSummary={reviewSummary} filter={filter} motionOnly={false} - filterLabels={reviewLabels} + filterList={reviewFilterList} onUpdateFilter={updateFilter} setMotionOnly={() => {}} /> @@ -434,7 +440,8 @@ export function RecordingView({ latestTime={timeRange.before} mode={exportMode} range={exportRange} - allLabels={reviewLabels} + allLabels={reviewFilterList.labels} + allZones={reviewFilterList.zones} onUpdateFilter={updateFilter} setRange={setExportRange} setMode={setExportMode}