mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-08-03 01:22:17 +03:00
Miscellaneous Fixes (#23709)
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
CI / AMD64 Build (push) Waiting to run
This commit is contained in:
@@ -27,7 +27,7 @@ import axios from "axios";
|
||||
import { toast } from "sonner";
|
||||
import useSWR from "swr";
|
||||
import { FrigateConfig } from "@/types/frigateConfig";
|
||||
import { reviewQueries } from "@/utils/zoneEdutUtil";
|
||||
import { removeRequiredZoneQuery, reviewQueries } from "@/utils/zoneEdutUtil";
|
||||
import IconWrapper from "../ui/icon-wrapper";
|
||||
import { buttonVariants } from "@/components/ui/button";
|
||||
import { Trans, useTranslation } from "react-i18next";
|
||||
@@ -153,6 +153,30 @@ export default function PolygonItem({
|
||||
cameraConfig?.review.alerts.required_zones || [],
|
||||
cameraConfig?.review.detections.required_zones || [],
|
||||
);
|
||||
const genaiQueries = removeRequiredZoneQuery(
|
||||
polygon.name,
|
||||
polygon.camera,
|
||||
"objects.genai",
|
||||
cameraConfig?.objects.genai.required_zones || [],
|
||||
);
|
||||
const snapshotQueries = removeRequiredZoneQuery(
|
||||
polygon.name,
|
||||
polygon.camera,
|
||||
"snapshots",
|
||||
cameraConfig?.snapshots.required_zones || [],
|
||||
);
|
||||
const mqttQueries = removeRequiredZoneQuery(
|
||||
polygon.name,
|
||||
polygon.camera,
|
||||
"mqtt",
|
||||
cameraConfig?.mqtt.required_zones || [],
|
||||
);
|
||||
const autotrackQueries = removeRequiredZoneQuery(
|
||||
polygon.name,
|
||||
polygon.camera,
|
||||
"onvif.autotracking",
|
||||
cameraConfig?.onvif.autotracking.required_zones || [],
|
||||
);
|
||||
// Also delete from profiles that have overrides for this zone
|
||||
let profileQueries = "";
|
||||
if (allProfileNames && cameraConfig) {
|
||||
@@ -165,7 +189,7 @@ export default function PolygonItem({
|
||||
}
|
||||
}
|
||||
}
|
||||
url = `cameras.${polygon.camera}.zones.${polygon.name}${alertQueries}${detectionQueries}${profileQueries}`;
|
||||
url = `cameras.${polygon.camera}.zones.${polygon.name}${alertQueries}${detectionQueries}${genaiQueries}${snapshotQueries}${mqttQueries}${autotrackQueries}${profileQueries}`;
|
||||
}
|
||||
|
||||
await axios
|
||||
|
||||
@@ -108,7 +108,11 @@ export default function ZoneEditPane({
|
||||
}
|
||||
const inRequiredZones =
|
||||
cam.review.alerts.required_zones.includes(polygon.name) ||
|
||||
cam.review.detections.required_zones.includes(polygon.name);
|
||||
cam.review.detections.required_zones.includes(polygon.name) ||
|
||||
cam.objects.genai.required_zones.includes(polygon.name) ||
|
||||
cam.snapshots.required_zones.includes(polygon.name) ||
|
||||
cam.mqtt.required_zones.includes(polygon.name) ||
|
||||
cam.onvif.autotracking.required_zones.includes(polygon.name);
|
||||
const hasProfileOverride = Object.values(cam.profiles ?? {}).some(
|
||||
(profile) => profile?.zones && polygon.name in profile.zones,
|
||||
);
|
||||
|
||||
@@ -1,3 +1,33 @@
|
||||
// Build a config/set query fragment that removes `name` from a
|
||||
// required_zones list on the given camera section (e.g. "snapshots",
|
||||
// "mqtt", "objects.genai", "onvif.autotracking"), rebuilding the
|
||||
// remaining entries. When removing the name empties the list, the
|
||||
// required_zones key itself is deleted so the field reverts to its
|
||||
// default instead of retaining the now-stale zone name. Returns an empty
|
||||
// string when `name` is not present so unrelated sections are untouched.
|
||||
export const removeRequiredZoneQuery = (
|
||||
name: string,
|
||||
camera: string,
|
||||
section: string,
|
||||
zones: string[],
|
||||
) => {
|
||||
const remaining = new Set<string>(zones || []);
|
||||
|
||||
if (!remaining.has(name)) {
|
||||
return "";
|
||||
}
|
||||
|
||||
remaining.delete(name);
|
||||
|
||||
const key = `cameras.${camera}.${section}.required_zones`;
|
||||
|
||||
if (remaining.size === 0) {
|
||||
return `&${key}`;
|
||||
}
|
||||
|
||||
return [...remaining].map((zone) => `&${key}=${zone}`).join("");
|
||||
};
|
||||
|
||||
export const reviewQueries = (
|
||||
name: string,
|
||||
review_alerts: boolean,
|
||||
|
||||
Reference in New Issue
Block a user