import dynamic from "next/dynamic"; import { useState, useEffect } from "react"; import { useTranslation } from "next-i18next"; import Error from "../components/error"; import Container from "../components/container"; import Block from "../components/block"; import useWidgetAPI from "utils/proxy/use-widget-api"; const ChartDual = dynamic(() => import("../components/chart_dual"), { ssr: false }); const defaultPointsLimit = 15; const defaultInterval = 1000; export default function Component({ service }) { const { t } = useTranslation(); const { widget } = service; const { chart, refreshInterval = defaultInterval, pointsLimit = defaultPointsLimit, version = 3 } = widget; const [, gpuName] = widget.metric.split(":"); const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ a: 0, b: 0 }, 0, pointsLimit)); const { data, error } = useWidgetAPI(widget, `${version}/gpu`, { refreshInterval: Math.max(defaultInterval, refreshInterval), }); useEffect(() => { if (data) { // eslint-disable-next-line eqeqeq const gpuData = data.find((item) => item[item.key] == gpuName); if (gpuData) { setDataPoints((prevDataPoints) => { const newDataPoints = [...prevDataPoints, { a: gpuData.mem, b: gpuData.proc }]; if (newDataPoints.length > pointsLimit) { newDataPoints.shift(); } return newDataPoints; }); } } }, [data, gpuName, pointsLimit]); if (error) { return ( ); } if (!data) { return ( - ); } // eslint-disable-next-line eqeqeq const gpuData = data.find((item) => item[item.key] == gpuName); if (!gpuData) { return ( - ); } return ( {chart && ( t("common.percent", { value, maximumFractionDigits: 1, }) } /> )} {chart && ( {gpuData && gpuData.name &&
{gpuData.name}
}
{t("common.number", { value: gpuData.mem, maximumFractionDigits: 1, })} % {t("resources.mem")}
)} {!chart && (
{t("common.number", { value: gpuData.temperature, maximumFractionDigits: 1, })} ° C
)}
{!chart && (
{t("common.number", { value: gpuData.proc, maximumFractionDigits: 1, })} % {t("glances.gpu")}
)} {!chart && <>•}
{t("common.number", { value: gpuData.proc, maximumFractionDigits: 1, })} % {t("glances.gpu")}
{chart && (
{t("common.number", { value: gpuData.temperature, maximumFractionDigits: 1, })} ° C
)} {gpuData && gpuData.name && !chart &&
{gpuData.name}
}
); }