diff --git a/web/src/pages/Settings.tsx b/web/src/pages/Settings.tsx
index bfc3f6f8e..79b6dd40a 100644
--- a/web/src/pages/Settings.tsx
+++ b/web/src/pages/Settings.tsx
@@ -35,7 +35,7 @@ import MotionTunerView from "@/views/settings/MotionTunerView";
import MasksAndZonesView from "@/views/settings/MasksAndZonesView";
import AuthenticationView from "@/views/settings/AuthenticationView";
import NotificationView from "@/views/settings/NotificationsSettingsView";
-import SearchSettingsView from "@/views/settings/SearchSettingsView";
+import ClassificationSettingsView from "@/views/settings/SearchSettingsView";
import UiSettingsView from "@/views/settings/UiSettingsView";
import { useSearchEffect } from "@/hooks/use-overlay-state";
import { useSearchParams } from "react-router-dom";
@@ -46,7 +46,7 @@ import { useIsAdmin } from "@/hooks/use-is-admin";
const allSettingsViews = [
"UI settings",
- "explore settings",
+ "classification settings",
"camera settings",
"masks / zones",
"motion tuner",
@@ -245,8 +245,8 @@ export default function Settings() {
{page == "UI settings" &&
}
- {page == "explore settings" && (
-
+ {page == "classification settings" && (
+
)}
{page == "debug" && (
diff --git a/web/src/views/settings/SearchSettingsView.tsx b/web/src/views/settings/SearchSettingsView.tsx
index b3f35bde7..79f1db656 100644
--- a/web/src/views/settings/SearchSettingsView.tsx
+++ b/web/src/views/settings/SearchSettingsView.tsx
@@ -21,19 +21,20 @@ import {
SelectTrigger,
} from "@/components/ui/select";
-type SearchSettingsViewProps = {
+type ClassificationSettings = {
+ search: {
+ enabled?: boolean;
+ reindex?: boolean;
+ model_size?: SearchModelSize;
+ };
+};
+
+type ClassificationSettingsViewProps = {
setUnsavedChanges: React.Dispatch
>;
};
-
-type SearchSettings = {
- enabled?: boolean;
- reindex?: boolean;
- model_size?: SearchModelSize;
-};
-
-export default function SearchSettingsView({
+export default function ClassificationSettingsView({
setUnsavedChanges,
-}: SearchSettingsViewProps) {
+}: ClassificationSettingsViewProps) {
const { data: config, mutate: updateConfig } =
useSWR("config");
const [changedValue, setChangedValue] = useState(false);
@@ -41,40 +42,55 @@ export default function SearchSettingsView({
const { addMessage, removeMessage } = useContext(StatusBarMessagesContext)!;
- const [searchSettings, setSearchSettings] = useState({
- enabled: undefined,
- reindex: undefined,
- model_size: undefined,
- });
+ const [classificationSettings, setClassificationSettings] =
+ useState({
+ search: {
+ enabled: undefined,
+ reindex: undefined,
+ model_size: undefined,
+ },
+ });
- const [origSearchSettings, setOrigSearchSettings] = useState({
- enabled: undefined,
- reindex: undefined,
- model_size: undefined,
- });
+ const [origSearchSettings, setOrigSearchSettings] =
+ useState({
+ search: {
+ enabled: undefined,
+ reindex: undefined,
+ model_size: undefined,
+ },
+ });
useEffect(() => {
if (config) {
- if (searchSettings?.enabled == undefined) {
- setSearchSettings({
- enabled: config.semantic_search.enabled,
- reindex: config.semantic_search.reindex,
- model_size: config.semantic_search.model_size,
+ if (classificationSettings?.search.enabled == undefined) {
+ setClassificationSettings({
+ search: {
+ enabled: config.semantic_search.enabled,
+ reindex: config.semantic_search.reindex,
+ model_size: config.semantic_search.model_size,
+ },
});
}
setOrigSearchSettings({
- enabled: config.semantic_search.enabled,
- reindex: config.semantic_search.reindex,
- model_size: config.semantic_search.model_size,
+ search: {
+ enabled: config.semantic_search.enabled,
+ reindex: config.semantic_search.reindex,
+ model_size: config.semantic_search.model_size,
+ },
});
}
// we know that these deps are correct
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [config]);
- const handleSearchConfigChange = (newConfig: Partial) => {
- setSearchSettings((prevConfig) => ({ ...prevConfig, ...newConfig }));
+ const handleSearchConfigChange = (
+ newConfig: Partial,
+ ) => {
+ setClassificationSettings((prevConfig) => ({
+ ...prevConfig,
+ ...newConfig,
+ }));
setUnsavedChanges(true);
setChangedValue(true);
};
@@ -84,14 +100,14 @@ export default function SearchSettingsView({
axios
.put(
- `config/set?semantic_search.enabled=${searchSettings.enabled ? "True" : "False"}&semantic_search.reindex=${searchSettings.reindex ? "True" : "False"}&semantic_search.model_size=${searchSettings.model_size}`,
+ `config/set?semantic_search.enabled=${classificationSettings.search.enabled ? "True" : "False"}&semantic_search.reindex=${classificationSettings.search.reindex ? "True" : "False"}&semantic_search.model_size=${classificationSettings.search.model_size}`,
{
requires_restart: 0,
},
)
.then((res) => {
if (res.status === 200) {
- toast.success("Explore settings have been saved.", {
+ toast.success("Classification settings have been saved.", {
position: "top-center",
});
setChangedValue(false);
@@ -114,15 +130,10 @@ export default function SearchSettingsView({
.finally(() => {
setIsLoading(false);
});
- }, [
- updateConfig,
- searchSettings.enabled,
- searchSettings.reindex,
- searchSettings.model_size,
- ]);
+ }, [updateConfig, classificationSettings.search]);
const onCancel = useCallback(() => {
- setSearchSettings(origSearchSettings);
+ setClassificationSettings(origSearchSettings);
setChangedValue(false);
removeMessage("search_settings", "search_settings");
}, [origSearchSettings, removeMessage]);
@@ -131,7 +142,7 @@ export default function SearchSettingsView({
if (changedValue) {
addMessage(
"search_settings",
- `Unsaved Explore settings changes`,
+ `Unsaved Classification settings changes`,
undefined,
"search_settings",
);
@@ -143,7 +154,7 @@ export default function SearchSettingsView({
}, [changedValue]);
useEffect(() => {
- document.title = "Explore Settings - Frigate";
+ document.title = "Classification Settings - Frigate";
}, []);
if (!config) {
@@ -155,7 +166,7 @@ export default function SearchSettingsView({
- Explore Settings
+ Classification Settings
@@ -188,10 +199,10 @@ export default function SearchSettingsView({
{
- handleSearchConfigChange({ enabled: isChecked });
+ handleSearchConfigChange({ search: { enabled: isChecked } });
}}
/>
@@ -203,10 +214,10 @@ export default function SearchSettingsView({
{
- handleSearchConfigChange({ reindex: isChecked });
+ handleSearchConfigChange({ search: { reindex: isChecked } });
}}
/>
@@ -240,15 +251,17 @@ export default function SearchSettingsView({