From 89db960c05ffed007e0eeae5852a40b3ac97cd1a Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Sat, 16 Aug 2025 08:08:11 -0500 Subject: [PATCH] Remove score sorting constraint (#19501) Do not require a score filter to be applied in order to sort by object score. --- frigate/api/event.py | 21 +++++++++++++------ .../components/filter/SearchFilterGroup.tsx | 5 +---- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/frigate/api/event.py b/frigate/api/event.py index 4287e829a..27353e4b5 100644 --- a/frigate/api/event.py +++ b/frigate/api/event.py @@ -724,15 +724,24 @@ def events_search(request: Request, params: EventsSearchQueryParams = Depends()) if (sort is None or sort == "relevance") and search_results: processed_events.sort(key=lambda x: x.get("search_distance", float("inf"))) - elif min_score is not None and max_score is not None and sort == "score_asc": + elif sort == "score_asc": processed_events.sort(key=lambda x: x["data"]["score"]) - elif min_score is not None and max_score is not None and sort == "score_desc": + elif sort == "score_desc": processed_events.sort(key=lambda x: x["data"]["score"], reverse=True) - elif min_speed is not None and max_speed is not None and sort == "speed_asc": - processed_events.sort(key=lambda x: x["data"]["average_estimated_speed"]) - elif min_speed is not None and max_speed is not None and sort == "speed_desc": + elif sort == "speed_asc": processed_events.sort( - key=lambda x: x["data"]["average_estimated_speed"], reverse=True + key=lambda x: ( + x["data"].get("average_estimated_speed") is None, + x["data"].get("average_estimated_speed"), + ) + ) + elif sort == "speed_desc": + processed_events.sort( + key=lambda x: ( + x["data"].get("average_estimated_speed") is None, + x["data"].get("average_estimated_speed", float("-inf")), + ), + reverse=True, ) elif sort == "date_asc": processed_events.sort(key=lambda x: x["start_time"]) diff --git a/web/src/components/filter/SearchFilterGroup.tsx b/web/src/components/filter/SearchFilterGroup.tsx index 198f27b63..1702fcc2a 100644 --- a/web/src/components/filter/SearchFilterGroup.tsx +++ b/web/src/components/filter/SearchFilterGroup.tsx @@ -131,10 +131,7 @@ export default function SearchFilterGroup({ ); const availableSortTypes = useMemo(() => { - const sortTypes = ["date_asc", "date_desc"]; - if (filter?.min_score || filter?.max_score) { - sortTypes.push("score_desc", "score_asc"); - } + const sortTypes = ["date_asc", "date_desc", "score_desc", "score_asc"]; if (filter?.min_speed || filter?.max_speed) { sortTypes.push("speed_desc", "speed_asc"); }