From fb0bbdf6390e8e8f1ca6e9d24206ded023478b7d Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Wed, 16 Oct 2024 16:20:14 -0500 Subject: [PATCH] score filter frontend --- .../overlay/dialog/SearchFilterDialog.tsx | 64 +++++++++++++++++++ web/src/pages/Explore.tsx | 4 ++ web/src/types/search.ts | 4 ++ web/src/views/search/SearchView.tsx | 2 + 4 files changed, 74 insertions(+) diff --git a/web/src/components/overlay/dialog/SearchFilterDialog.tsx b/web/src/components/overlay/dialog/SearchFilterDialog.tsx index f1fd4c676..adb63b43b 100644 --- a/web/src/components/overlay/dialog/SearchFilterDialog.tsx +++ b/web/src/components/overlay/dialog/SearchFilterDialog.tsx @@ -23,6 +23,8 @@ import { Switch } from "@/components/ui/switch"; import { Label } from "@/components/ui/label"; import { DropdownMenuSeparator } from "@/components/ui/dropdown-menu"; import { cn } from "@/lib/utils"; +import { DualThumbSlider } from "@/components/ui/slider"; +import { Input } from "@/components/ui/input"; type SearchFilterDialogProps = { config?: FrigateConfig; @@ -54,6 +56,7 @@ export default function SearchFilterDialog({ () => currentFilter && (currentFilter.time_range || + (currentFilter.min_score && currentFilter.max_score) || (currentFilter.zones?.length ?? 0) > 0 || (currentFilter.sub_labels?.length ?? 0) > 0 || (currentFilter.search_type?.length ?? 2) !== 2), @@ -97,6 +100,13 @@ export default function SearchFilterDialog({ setCurrentFilter({ ...currentFilter, sub_labels: newSubLabels }) } /> + + setCurrentFilter({ ...currentFilter, min_score: min, max_score: max }) + } + /> {config?.semantic_search?.enabled && !currentFilter?.search_type?.includes("similarity") && ( @@ -420,6 +432,58 @@ export function SubFilterContent({ ); } +type ScoreFilterContentProps = { + minScore: number | undefined; + maxScore: number | undefined; + setScoreRange: (min: number | undefined, max: number | undefined) => void; +}; +export function ScoreFilterContent({ + minScore, + maxScore, + setScoreRange, +}: ScoreFilterContentProps) { + return ( +
+ +
Score
+
+ { + const value = e.target.value; + + if (value) { + setScoreRange(parseInt(value) / 100.0, maxScore ?? 1.0); + } + }} + /> + setScoreRange(min, max)} + /> + { + const value = e.target.value; + + if (value) { + setScoreRange(minScore ?? 0.5, parseInt(value) / 100.0); + } + }} + /> +
+
+ ); +} + type SearchTypeContentProps = { searchSources: SearchSource[] | undefined; setSearchSources: (sources: SearchSource[] | undefined) => void; diff --git a/web/src/pages/Explore.tsx b/web/src/pages/Explore.tsx index 770b45cb8..032f00c87 100644 --- a/web/src/pages/Explore.tsx +++ b/web/src/pages/Explore.tsx @@ -103,6 +103,8 @@ export default function Explore() { after: searchSearchParams["after"], time_range: searchSearchParams["time_range"], search_type: searchSearchParams["search_type"], + min_score: searchSearchParams["min_score"], + max_score: searchSearchParams["max_score"], limit: Object.keys(searchSearchParams).length == 0 ? API_LIMIT : undefined, timezone, @@ -129,6 +131,8 @@ export default function Explore() { after: searchSearchParams["after"], time_range: searchSearchParams["time_range"], search_type: searchSearchParams["search_type"], + min_score: searchSearchParams["min_score"], + max_score: searchSearchParams["max_score"], event_id: searchSearchParams["event_id"], timezone, include_thumbnails: 0, diff --git a/web/src/types/search.ts b/web/src/types/search.ts index 50521878e..7dee1bbc4 100644 --- a/web/src/types/search.ts +++ b/web/src/types/search.ts @@ -56,6 +56,8 @@ export type SearchFilter = { zones?: string[]; before?: number; after?: number; + min_score?: number; + max_score?: number; time_range?: string; search_type?: SearchSource[]; event_id?: string; @@ -71,6 +73,8 @@ export type SearchQueryParams = { zones?: string[]; before?: string; after?: string; + min_score?: number; + max_score?: number; search_type?: string; limit?: number; in_progress?: number; diff --git a/web/src/views/search/SearchView.tsx b/web/src/views/search/SearchView.tsx index b22a5248a..c403012c7 100644 --- a/web/src/views/search/SearchView.tsx +++ b/web/src/views/search/SearchView.tsx @@ -144,6 +144,8 @@ export default function SearchView({ : ["12:00AM-11:59PM"], before: [formatDateToLocaleString()], after: [formatDateToLocaleString(-5)], + min_score: ["50"], + max_score: ["100"], }), [config, allLabels, allZones, allSubLabels], );