diff --git a/web/src/components/filter/ExportFilterGroup.tsx b/web/src/components/filter/ExportFilterGroup.tsx
index 680b24fee..c5fe4f33c 100644
--- a/web/src/components/filter/ExportFilterGroup.tsx
+++ b/web/src/components/filter/ExportFilterGroup.tsx
@@ -1,4 +1,14 @@
-import { ExportFilter, ExportFilters } from "@/types/export";
+import { cn } from "@/lib/utils";
+import {
+ DEFAULT_EXPORT_FILTERS,
+ ExportFilter,
+ ExportFilters,
+} from "@/types/export";
+import { CamerasFilterButton } from "./CamerasFilterButton";
+import { useAllowedCameras } from "@/hooks/use-allowed-cameras";
+import { useMemo } from "react";
+import { FrigateConfig } from "@/types/frigateConfig";
+import useSWR from "swr";
type ExportFilterGroupProps = {
className: string;
@@ -9,8 +19,49 @@ type ExportFilterGroupProps = {
export default function ExportFilterGroup({
className,
filter,
- filters,
+ filters = DEFAULT_EXPORT_FILTERS,
onUpdateFilter,
}: ExportFilterGroupProps) {
- return
;
+ const { data: config } = useSWR("config", {
+ revalidateOnFocus: false,
+ });
+ const allowedCameras = useAllowedCameras();
+
+ const filterValues = useMemo(
+ () => ({
+ cameras: allowedCameras,
+ }),
+ [allowedCameras],
+ );
+
+ const groups = useMemo(() => {
+ if (!config) {
+ return [];
+ }
+
+ return Object.entries(config.camera_groups).sort(
+ (a, b) => a[1].order - b[1].order,
+ );
+ }, [config]);
+
+ return (
+
+ {filters.includes("cameras") && (
+ {
+ onUpdateFilter({ ...filter, cameras: newCameras });
+ }}
+ />
+ )}
+
+ );
}
diff --git a/web/src/pages/Exports.tsx b/web/src/pages/Exports.tsx
index 00fe37264..5faf0c08f 100644
--- a/web/src/pages/Exports.tsx
+++ b/web/src/pages/Exports.tsx
@@ -35,6 +35,7 @@ import { useTranslation } from "react-i18next";
import { LuFolderX } from "react-icons/lu";
import { toast } from "sonner";
import useSWR from "swr";
+import ExportFilterGroup from "@/components/filter/ExportFilterGroup";
function Exports() {
const { t } = useTranslation(["views/exports"]);
@@ -246,7 +247,12 @@ function Exports() {
onChange={(e) => setSearch(e.target.value)}
/>
-
+ {}}
+ />
{selectedCase ? (
diff --git a/web/vite.config.ts b/web/vite.config.ts
index 98a9afde1..148048995 100644
--- a/web/vite.config.ts
+++ b/web/vite.config.ts
@@ -4,7 +4,7 @@ import { defineConfig } from "vite";
import react from "@vitejs/plugin-react-swc";
import monacoEditorPlugin from "vite-plugin-monaco-editor";
-const proxyHost = process.env.PROXY_HOST || "192.168.50.106:5002";
+const proxyHost = process.env.PROXY_HOST || "1ocalhost:5000";
// https://vitejs.dev/config/
export default defineConfig({