From 3b523b37da42f66995e63e4afaafa8da8c7c2dce Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Tue, 11 Jun 2024 07:59:30 -0600 Subject: [PATCH] Update filtering logic --- frigate/api/review.py | 15 +++++++++++++++ web/src/pages/Events.tsx | 2 ++ 2 files changed, 17 insertions(+) diff --git a/frigate/api/review.py b/frigate/api/review.py index eabf91bb2..7f17c77e1 100644 --- a/frigate/api/review.py +++ b/frigate/api/review.py @@ -111,6 +111,7 @@ def review_summary(): cameras = request.args.get("cameras", "all") labels = request.args.get("labels", "all") + zones = request.args.get("zones", "all") clauses = [(ReviewSegment.start_time > day_ago)] @@ -133,6 +134,20 @@ def review_summary(): label_clause = reduce(operator.or_, label_clauses) clauses.append((label_clause)) + if zones != "all": + # use matching so segments with multiple zones + # still match on a search where any zone matches + zone_clauses = [] + filtered_zones = zones.split(",") + + for zone in filtered_zones: + zone_clauses.append( + (ReviewSegment.data["zones"].cast("text") % f'*"{zone}"*') + ) + + zone_clause = reduce(operator.or_, zone_clauses) + clauses.append((zone_clause)) + last_24 = ( ReviewSegment.select( fn.SUM( diff --git a/web/src/pages/Events.tsx b/web/src/pages/Events.tsx index be7e253a8..ff998803c 100644 --- a/web/src/pages/Events.tsx +++ b/web/src/pages/Events.tsx @@ -136,6 +136,7 @@ export default function Events() { const params = { cameras: reviewSearchParams["cameras"], labels: reviewSearchParams["labels"], + zones: reviewSearchParams["zones"], reviewed: 1, before: reviewSearchParams["before"] || last24Hours.before, after: reviewSearchParams["after"] || last24Hours.after, @@ -221,6 +222,7 @@ export default function Events() { timezone: timezone, cameras: reviewSearchParams["cameras"] ?? null, labels: reviewSearchParams["labels"] ?? null, + zones: reviewSearchParams["zones"] ?? null, }, ], {