import useSWR from "swr"; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from "../ui/dialog"; import ActivityIndicator from "../indicators/activity-indicator"; import { GpuInfo, Nvinfo, Vainfo } from "@/types/stats"; import { Button } from "../ui/button"; import copy from "copy-to-clipboard"; import { toast } from "sonner"; import { useTranslation } from "react-i18next"; type GPUInfoDialogProps = { showGpuInfo: boolean; gpuType: GpuInfo; setShowGpuInfo: (show: boolean) => void; }; export default function GPUInfoDialog({ showGpuInfo, gpuType, setShowGpuInfo, }: GPUInfoDialogProps) { const { t } = useTranslation(["views/system"]); const { data: vainfo } = useSWR( showGpuInfo && gpuType == "vainfo" ? "vainfo" : null, ); const { data: nvinfo } = useSWR( showGpuInfo && gpuType == "nvinfo" ? "nvinfo" : null, ); const onCopyInfo = async () => { copy( JSON.stringify(gpuType == "vainfo" ? vainfo : nvinfo) .replace(/\\t/g, "\t") .replace(/\\n/g, "\n"), ); toast.success(t("general.hardwareInfo.gpuInfo.toast.success")); }; if (gpuType == "vainfo") { return ( {t("general.hardwareInfo.gpuInfo.vainfoOutput.title")} {vainfo ? (
{t("general.hardwareInfo.gpuInfo.vainfoOutput.returnCode", { code: vainfo.return_code, })}

{vainfo.return_code == 0 ? t("general.hardwareInfo.gpuInfo.vainfoOutput.processOutput") : t("general.hardwareInfo.gpuInfo.vainfoOutput.processError")}

{vainfo.return_code == 0 ? vainfo.stdout : vainfo.stderr}
) : ( )}
); } else { return ( {t("general.hardwareInfo.gpuInfo.nvidiaSMIOutput.title")} {nvinfo ? (
{t("general.hardwareInfo.gpuInfo.nvidiaSMIOutput.name", { name: nvinfo["0"].name, })}

{t("general.hardwareInfo.gpuInfo.nvidiaSMIOutput.driver", { driver: nvinfo["0"].driver, })}

{t( "general.hardwareInfo.gpuInfo.nvidiaSMIOutput.cudaComputerCapability", { cuda_compute: nvinfo["0"].cuda_compute, }, )}

{t("general.hardwareInfo.gpuInfo.nvidiaSMIOutput.vbios", { vbios: nvinfo["0"].vbios, })}
) : ( )}
); } }