fix: benchmark detail envs gpus list

This commit is contained in:
jialin
2026-02-11 16:50:49 +08:00
parent 289a651d52
commit 228cd4e664
2 changed files with 80 additions and 42 deletions
@@ -1,5 +1,6 @@
import RowChildren from '@/components/seal-table/components/row-children'; import RowChildren from '@/components/seal-table/components/row-children';
import SealTable from '@/components/seal-table/index'; import SealTable from '@/components/seal-table/index';
import TableContext from '@/components/seal-table/table-context';
import useExpandedRowKeys from '@/hooks/use-expanded-row-keys'; import useExpandedRowKeys from '@/hooks/use-expanded-row-keys';
import useMemoizedFn from 'ahooks/lib/useMemoizedFn'; import useMemoizedFn from 'ahooks/lib/useMemoizedFn';
import { Col, Row } from 'antd'; import { Col, Row } from 'antd';
@@ -18,6 +19,12 @@ const Container = styled.div`
gap: 16px; gap: 16px;
`; `;
const GPURowWrapper = styled.div`
display: flex;
flex-direction: column;
width: 100%;
`;
/** /**
* *
* @returns display worker info and gpu info. * @returns display worker info and gpu info.
@@ -53,8 +60,8 @@ const Environment: React.FC = () => {
return workerMap.get(workerID) || undefined; return workerMap.get(workerID) || undefined;
}; };
const findGPUByWorkerName = (name: string): GPUData[] => { const findGPUByGPUIds = (ids: string[]): GPUData[] => {
return gpuList.filter((gpu) => gpu.worker_name === name); return gpuList.filter((gpu) => ids.includes(gpu.id));
}; };
// main worker // main worker
@@ -66,7 +73,7 @@ const Environment: React.FC = () => {
return null; return null;
} }
const gpuData = findGPUByWorkerName(mainworker.name); const gpuData = findGPUByGPUIds(instanceData.gpu_ids);
return { return {
...mainworker, ...mainworker,
@@ -88,7 +95,7 @@ const Environment: React.FC = () => {
if (!subWorker) { if (!subWorker) {
return null; return null;
} }
const gpuData = findGPUByWorkerName(subWorker.name); const gpuData = findGPUByGPUIds(worker.gpu_ids);
return { return {
...subWorker, ...subWorker,
@@ -103,61 +110,92 @@ const Environment: React.FC = () => {
return [mainWorker, ...subWorkerList].filter(Boolean) as WorkerData[]; return [mainWorker, ...subWorkerList].filter(Boolean) as WorkerData[];
}, [mainWorker, subWorkerList]); }, [mainWorker, subWorkerList]);
const handleToggleExpandAll = useMemoizedFn((expanded: boolean) => { const allChildren = useMemo(() => {
const keys = dataList?.map((item) => item.id); return dataList.reduce<GPUData[]>(
handleExpandAll(expanded, keys); (
}); acc,
worker: {
children?: GPUData[];
[key: string]: any;
}
) => {
if (worker.children && worker.children.length > 0) {
acc.push(...(worker.children as GPUData[]));
}
return acc;
},
[]
);
}, [dataList]);
const loadChildren = useMemoizedFn(async (record: any) => { const loadChildren = useMemoizedFn(async (record: any) => {
return record.children || []; return record.children || [];
}); });
const handleToggleExpandAll = useMemoizedFn(async (expanded: boolean) => {
const keys = dataList?.map((item) => item.id);
handleExpandAll(expanded, keys);
});
const renderChildren = useMemoizedFn((list: any[]) => { const renderChildren = useMemoizedFn((list: any[]) => {
return ( return (
<div style={{ borderRadius: 'var(--ant-table-header-border-radius)' }}> <div style={{ borderRadius: 'var(--ant-table-header-border-radius)' }}>
<GPUHeader columns={GPUColumns}></GPUHeader> <GPUHeader columns={GPUColumns}></GPUHeader>
<RowChildren> <GPURowWrapper>
{list.map((gpu) => ( {list.map((gpu) => (
<Row key={gpu.id} style={{ width: '100%' }} align="middle"> <RowChildren key={gpu.id}>
{GPUColumns.map((col) => ( <Row key={gpu.id} style={{ width: '100%' }} align="middle">
<Col key={col.key} span={col.span} style={{ ...col.colStyle }}> {GPUColumns.map((col) => (
<span <Col
style={{ key={col.key}
display: 'flex', span={col.span}
alignItems: 'flex-start', style={{ ...col.colStyle }}
gap: 4,
flexDirection: 'column'
}}
> >
{col.render <span
? col.render(gpu[col.dataIndex], gpu) style={{
: gpu[col.dataIndex]} display: 'flex',
</span> alignItems: 'flex-start',
</Col> gap: 4,
))} flexDirection: 'column'
</Row> }}
>
{col.render
? col.render(gpu[col.dataIndex], gpu)
: gpu[col.dataIndex]}
</span>
</Col>
))}
</Row>
</RowChildren>
))} ))}
</RowChildren> </GPURowWrapper>
</div> </div>
); );
}); });
return ( return (
<Container> <Container>
<SealTable <TableContext.Provider
rowKey="id" value={{
loadChildren={loadChildren} allChildren: allChildren
expandedRowKeys={expandedRowKeys} }}
onExpand={handleExpandChange} >
onExpandAll={handleToggleExpandAll} <SealTable
renderChildren={renderChildren} rowKey="id"
showSorterTooltip={false} loadChildren={loadChildren}
dataSource={dataList} expandedRowKeys={expandedRowKeys}
loading={false} onExpand={handleExpandChange}
loadend={true} onExpandAll={handleToggleExpandAll}
columns={workerColumns} renderChildren={renderChildren}
expandable={true} showSorterTooltip={false}
></SealTable> childParentKey="worker_id"
dataSource={dataList}
loading={false}
loadend={true}
columns={workerColumns}
expandable={true}
></SealTable>
</TableContext.Provider>
</Container> </Container>
); );
}; };
@@ -43,7 +43,7 @@ const useBenchmarkColumns = (params: {
</Typography.Text> </Typography.Text>
), ),
dataIndex: 'operations', dataIndex: 'operations',
width: 100, width: 140,
render: (value: string, record: ListItem) => ( render: (value: string, record: ListItem) => (
<RowActions record={record} handleSelect={handleSelect}></RowActions> <RowActions record={record} handleSelect={handleSelect}></RowActions>
) )