Cleanup rendering

This commit is contained in:
Nicolas Mowen 2024-04-04 13:02:49 -06:00
parent e5b9e7e5cd
commit 84064ea1c1
2 changed files with 54 additions and 41 deletions

View File

@ -1,5 +1,6 @@
import { useFrigateStats } from "@/api/ws"; import { useFrigateStats } from "@/api/ws";
import { CameraLineGraph } from "@/components/graph/SystemGraph"; import { CameraLineGraph } from "@/components/graph/SystemGraph";
import { Skeleton } from "@/components/ui/skeleton";
import { FrigateConfig } from "@/types/frigateConfig"; import { FrigateConfig } from "@/types/frigateConfig";
import { FrigateStats } from "@/types/stats"; import { FrigateStats } from "@/types/stats";
import { useEffect, useMemo, useState } from "react"; import { useEffect, useMemo, useState } from "react";
@ -148,12 +149,13 @@ export default function CameraMetrics({
return ( return (
<div className="size-full mt-4 flex flex-col overflow-y-auto"> <div className="size-full mt-4 flex flex-col overflow-y-auto">
<div className="mb-5">Cameras</div> <div className="mb-5">Cameras</div>
<div className="grid grid-cols-1 sm:grid-cols-2 gap-2"> <div className="grid grid-cols-1 md:grid-cols-2 gap-2">
{config && {config &&
Object.values(config.cameras).map((camera) => { Object.values(config.cameras).map((camera) => {
if (camera.enabled) { if (camera.enabled) {
return ( return (
<div key={camera.name} className="grid grid-cols-2 gap-2"> <div key={camera.name} className="grid sm:grid-cols-2 gap-2">
{Object.keys(cameraCpuSeries).includes(camera.name) ? (
<div className="p-2.5 bg-primary rounded-2xl flex-col"> <div className="p-2.5 bg-primary rounded-2xl flex-col">
<div className="mb-5 capitalize"> <div className="mb-5 capitalize">
{camera.name.replaceAll("_", " ")} CPU {camera.name.replaceAll("_", " ")} CPU
@ -166,6 +168,10 @@ export default function CameraMetrics({
data={Object.values(cameraCpuSeries[camera.name] || {})} data={Object.values(cameraCpuSeries[camera.name] || {})}
/> />
</div> </div>
) : (
<Skeleton className="size-full aspect-video" />
)}
{Object.keys(cameraFpsSeries).includes(camera.name) ? (
<div className="p-2.5 bg-primary rounded-2xl flex-col"> <div className="p-2.5 bg-primary rounded-2xl flex-col">
<div className="mb-5 capitalize"> <div className="mb-5 capitalize">
{camera.name.replaceAll("_", " ")} DPS {camera.name.replaceAll("_", " ")} DPS
@ -178,6 +184,9 @@ export default function CameraMetrics({
data={Object.values(cameraFpsSeries[camera.name] || {})} data={Object.values(cameraFpsSeries[camera.name] || {})}
/> />
</div> </div>
) : (
<Skeleton className="size-full aspect-video" />
)}
</div> </div>
); );
} }

View File

@ -61,6 +61,16 @@ export default function GeneralMetrics({
} }
}, [initialStats, updatedStats, statsHistory, lastUpdated, setLastUpdated]); }, [initialStats, updatedStats, statsHistory, lastUpdated, setLastUpdated]);
const canGetGpuInfo = useMemo(
() =>
statsHistory.length > 0 &&
Object.keys(statsHistory[0]?.gpu_usages ?? {}).filter(
(key) =>
key == "amd-vaapi" || key == "intel-vaapi" || key == "intel-qsv",
).length > 0,
[statsHistory],
);
// timestamps // timestamps
const updateTimes = useMemo( const updateTimes = useMemo(
@ -274,7 +284,7 @@ export default function GeneralMetrics({
Detectors Detectors
</div> </div>
<div className="w-full mt-4 grid grid-cols-1 sm:grid-cols-3 gap-2"> <div className="w-full mt-4 grid grid-cols-1 sm:grid-cols-3 gap-2">
{detInferenceTimeSeries.length != 0 ? ( {statsHistory.length != 0 ? (
<div className="p-2.5 bg-primary rounded-2xl flex-col"> <div className="p-2.5 bg-primary rounded-2xl flex-col">
<div className="mb-5">Detector Inference Speed</div> <div className="mb-5">Detector Inference Speed</div>
{detInferenceTimeSeries.map((series) => ( {detInferenceTimeSeries.map((series) => (
@ -336,13 +346,7 @@ export default function GeneralMetrics({
<div className="text-muted-foreground text-sm font-medium"> <div className="text-muted-foreground text-sm font-medium">
GPUs GPUs
</div> </div>
{statsHistory.length > 0 && {canGetGpuInfo && (
Object.keys(statsHistory[0].gpu_usages ?? {}).filter(
(key) =>
key == "amd-vaapi" ||
key == "intel-vaapi" ||
key == "intel-qsv",
).length > 0 && (
<Button <Button
className="cursor-pointer" className="cursor-pointer"
variant="secondary" variant="secondary"