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 Chart = dynamic(() => import("../components/chart"), { 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 } = widget; const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ value: 0 }, 0, pointsLimit)); const { data, error } = useWidgetAPI(service.widget, "cpu", { refreshInterval: Math.max(defaultInterval, refreshInterval), }); const { data: systemData, error: systemError } = useWidgetAPI(service.widget, "system"); useEffect(() => { if (data) { setDataPoints((prevDataPoints) => { const newDataPoints = [...prevDataPoints, { value: data.total }]; if (newDataPoints.length > pointsLimit) { newDataPoints.shift(); } return newDataPoints; }); } }, [data, pointsLimit]); if (error) { return ( ); } if (!data) { return ( - ); } return ( {chart && ( t("common.number", { value, style: "unit", unit: "percent", maximumFractionDigits: 0, }) } /> )} {!chart && systemData && !systemError && (
{systemData.linux_distro && `${systemData.linux_distro} - `} {systemData.os_version && systemData.os_version}
)} {systemData && !systemError && ( {systemData.linux_distro && chart &&
{systemData.linux_distro}
} {systemData.os_version && chart &&
{systemData.os_version}
} {systemData.hostname &&
{systemData.hostname}
}
)}
{t("common.number", { value: data.total, style: "unit", unit: "percent", maximumFractionDigits: 0, })}{" "} {t("resources.used")}
); }