import AutoTooltip from '@/components/auto-tooltip'; import RowChildren from '@/components/seal-table/components/row-children'; import SealTable from '@/components/seal-table/index'; import useExpandedRowKeys from '@/hooks/use-expanded-row-keys'; import { convertFileSize } from '@/utils'; import useMemoizedFn from 'ahooks/lib/useMemoizedFn'; import { Col, Row } from 'antd'; import React, { useMemo } from 'react'; import styled from 'styled-components'; import { useDetailContext } from '../../config/detail-context'; const Container = styled.div` display: flex; flex-direction: column; gap: 16px; `; const Environment: React.FC = () => { const { detailData } = useDetailContext(); const { snapshot } = detailData; const { handleExpandChange, handleExpandAll, expandedRowKeys } = useExpandedRowKeys(); const mainWorker = useMemo(() => { // get workers data const [[workerName, workerInfo]] = Object.entries(snapshot.workers); const gpuData = Object.values(snapshot.gpus).filter( (gpu) => gpu.worker_name === workerName ); return { ...workerInfo, isMain: true, children: gpuData }; }, [snapshot]); // const subWorkers = useMemo(() => { // const [[mainWorkerName, mainWorkerInfo]] = Object.entries(snapshot.workers); // const subOrdinaryWorkers = Object.values(snapshot.instances).filter( // (instance) => instance.worker_name === mainWorkerName // ); // return subOrdinaryWorkers.map((worker) => { // const gpuData = Object.values(snapshot.gpus).filter( // (gpu) => gpu.worker_name === worker.worker_name // ); // return { // ...worker, // isMain: false, // children: gpuData // }; // }); // }, [snapshot, mainWorker]); const GPUColumns = [ { title: 'GPU Name', dataIndex: 'name', key: 'name', span: 6, colStyle: { paddingLeft: 16 }, render: (value: string, record: any) => ( {value} ) }, { title: 'Vendor', dataIndex: 'vendor', key: 'vendor', span: 4, colStyle: { paddingLeft: 46 } }, { title: 'VRAM', dataIndex: 'memory_total', key: 'memory_total', label: 'VRAM', span: 3, render: (value: number, record: any) => convertFileSize(value) }, { title: 'Cores', dataIndex: 'core_total', key: 'core_total', label: 'Cores', span: 3 }, { title: 'Runtime Version', dataIndex: 'runtime_version', key: 'runtime_version', span: 4 }, { title: 'Driver Version', dataIndex: 'driver_version', key: 'driver_version', span: 4, colStyle: { paddingLeft: 35 } } ]; const columns = [ { title: 'Worker Name', dataIndex: 'name', key: 'name', span: 6 }, { title: 'System', dataIndex: 'os', key: 'system', span: 4, render: (os: { name: string; version: string }, record: any) => { return `${record.os.name}`; } }, { title: 'Version', dataIndex: 'version', key: 'version', span: 6, render: (val: any, record: any) => { return {record.os.version}; } }, { title: 'CPU Count', dataIndex: 'cpu_total', key: 'cpu_total', span: 4 }, { title: 'Memory', dataIndex: 'memory_total', key: 'memory_total', span: 4, render: (value: number) => convertFileSize(value) } ]; const dataList = useMemo(() => { return [mainWorker]; }, [mainWorker]); const handleToggleExpandAll = useMemoizedFn((expanded: boolean) => { const keys = dataList?.map((item) => item.id); handleExpandAll(expanded, keys); }); const loadChildren = useMemoizedFn(async (record: any) => { return record.children || []; }); const renderChildren = useMemoizedFn((list: any[]) => { return (
{list.map((gpu) => ( {GPUColumns.map((col) => ( {col.title} {col.render ? col.render((gpu as any)[col.dataIndex], gpu) : (gpu as any)[col.dataIndex]} ))} ))}
); }); return ( {/* Main {mainWorker?.workerData?.name} } > */} ); }; export default Environment;