From cd54a8115084d0820f9f594a3e9b1e3d4fd07cd8 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Tue, 8 Jul 2025 21:06:06 -0500 Subject: [PATCH] Fixes (#19038) * Fix Norwegian language code for date-fns module import * Fix incorrect apple compatibility change * Add other and unused as separate storage items --------- Co-authored-by: Nicolas Mowen --- frigate/ffmpeg_presets.py | 2 +- .../components/graph/CombinedStorageGraph.tsx | 35 +++++++++++++++---- web/src/hooks/use-date-locale.ts | 2 +- web/src/views/system/StorageMetrics.tsx | 7 ++-- 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/frigate/ffmpeg_presets.py b/frigate/ffmpeg_presets.py index 77b96057b..ee314e3c3 100644 --- a/frigate/ffmpeg_presets.py +++ b/frigate/ffmpeg_presets.py @@ -491,6 +491,6 @@ def parse_preset_output_record(arg: Any, force_record_hvc1: bool) -> list[str]: if force_record_hvc1: # Apple only supports HEVC if it is hvc1 (vs. hev1) - preset += FFMPEG_HVC1_ARGS + return preset + FFMPEG_HVC1_ARGS return preset diff --git a/web/src/components/graph/CombinedStorageGraph.tsx b/web/src/components/graph/CombinedStorageGraph.tsx index cad56056c..97b42ab9d 100644 --- a/web/src/components/graph/CombinedStorageGraph.tsx +++ b/web/src/components/graph/CombinedStorageGraph.tsx @@ -1,6 +1,6 @@ import { useTheme } from "@/context/theme-provider"; import { generateColors } from "@/utils/colorUtil"; -import { useEffect, useMemo } from "react"; +import { useCallback, useEffect, useMemo } from "react"; import Chart from "react-apexcharts"; import { Table, @@ -30,6 +30,7 @@ type CameraStorage = { type TotalStorage = { used: number; + camera: number; total: number; }; @@ -59,6 +60,13 @@ export function CombinedStorageGraph({ })); // Add the unused percentage to the series + series.push({ + name: "Other", + data: [(totalStorage.used / totalStorage.total) * 100], + usage: totalStorage.used, + bandwidth: 0, + color: (systemTheme || theme) == "dark" ? "#606060" : "#D5D5D5", + }); series.push({ name: "Unused", data: [ @@ -160,12 +168,27 @@ export function CombinedStorageGraph({ ApexCharts.exec(graphId, "updateOptions", options, true, true); }, [graphId, options]); + // convenience + + const getItemTitle = useCallback( + (name: string) => { + if (name == "Unused") { + return t("storage.cameraStorage.unused.title"); + } else if (name == "Other") { + return t("label.other", { ns: "common" }); + } else { + return name.replaceAll("_", " "); + } + }, + [t], + ); + return (
- {getUnitSize(totalStorage.used)} + {getUnitSize(totalStorage.camera)}
/
@@ -197,10 +220,8 @@ export function CombinedStorageGraph({ className="size-3 rounded-md" style={{ backgroundColor: item.color }} >
- {item.name === "Unused" - ? t("storage.cameraStorage.unused.title") - : item.name.replaceAll("_", " ")} - {item.name === "Unused" && ( + {getItemTitle(item.name)} + {(item.name === "Unused" || item.name == "Other") && (
{earliestDate && (