mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-12-12 08:06:42 +03:00
Some checks are pending
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
* feat: add zones friendly name * fix: fix the issue where the input field was empty when there was no friendly_name * chore: fix the issue where the friendly name would replace spaces with underscores * docs: update zones docs * Update web/src/components/settings/ZoneEditPane.tsx Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * Add friendly_name option for zone configuration Added optional friendly name for zones in configuration. * fix: fix the logical error in the null/empty check for the polygons parameter * fix: remove the toast name for zones will use the friendly_name instead * docs: remove emoji tips * revert: revert zones doc ui tips * Update docs/docs/configuration/zones.md Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * Update docs/docs/configuration/zones.md Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * Update docs/docs/configuration/zones.md Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * feat: add friendly zone names to tracking details and lifecycle item descriptions * chore: lint fix * refactor: add friendly zone names to timeline entries and clean up unused code * refactor: add formatList --------- Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { FrigateConfig } from "@/types/frigateConfig";
|
|
import { useMemo } from "react";
|
|
import useSWR from "swr";
|
|
|
|
export function resolveZoneName(
|
|
config: FrigateConfig | undefined,
|
|
zoneId: string,
|
|
cameraId?: string,
|
|
) {
|
|
if (!config) return String(zoneId).replace(/_/g, " ");
|
|
|
|
if (cameraId) {
|
|
const camera = config.cameras?.[String(cameraId)];
|
|
const zone = camera?.zones?.[zoneId];
|
|
return zone?.friendly_name || String(zoneId).replace(/_/g, " ");
|
|
}
|
|
|
|
for (const camKey in config.cameras) {
|
|
if (!Object.prototype.hasOwnProperty.call(config.cameras, camKey)) continue;
|
|
const cam = config.cameras[camKey];
|
|
if (!cam?.zones) continue;
|
|
if (Object.prototype.hasOwnProperty.call(cam.zones, zoneId)) {
|
|
const zone = cam.zones[zoneId];
|
|
return zone?.friendly_name || String(zoneId).replace(/_/g, " ");
|
|
}
|
|
}
|
|
|
|
// Fallback: return a cleaned-up zoneId string
|
|
return String(zoneId).replace(/_/g, " ");
|
|
}
|
|
|
|
export function useZoneFriendlyName(zoneId: string, cameraId?: string): string {
|
|
const { data: config } = useSWR<FrigateConfig>("config");
|
|
|
|
const name = useMemo(
|
|
() => resolveZoneName(config, zoneId, cameraId),
|
|
[config, cameraId, zoneId],
|
|
);
|
|
|
|
return name;
|
|
}
|