From 5d60751a660895f30eea3e1454baa7f83f927644 Mon Sep 17 00:00:00 2001 From: cp3hnu Date: Fri, 16 May 2025 14:14:26 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E5=86=85=E5=B5=8Ctesorboard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- react-ui/config/routes.ts | 5 +++++ react-ui/src/pages/Experiment/Tensorboard/index.tsx | 12 ++++++++++++ react-ui/src/pages/Experiment/index.jsx | 8 ++++++-- 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 react-ui/src/pages/Experiment/Tensorboard/index.tsx diff --git a/react-ui/config/routes.ts b/react-ui/config/routes.ts index e64318e0..8ec050ae 100644 --- a/react-ui/config/routes.ts +++ b/react-ui/config/routes.ts @@ -148,6 +148,11 @@ export default [ path: 'compare-visual', component: './Experiment/Aim/index', }, + { + name: '可视化', + path: 'visual', + component: './Experiment/Tensorboard/index', + }, ], }, { diff --git a/react-ui/src/pages/Experiment/Tensorboard/index.tsx b/react-ui/src/pages/Experiment/Tensorboard/index.tsx new file mode 100644 index 00000000..7124d0de --- /dev/null +++ b/react-ui/src/pages/Experiment/Tensorboard/index.tsx @@ -0,0 +1,12 @@ +/* + * @Author: 赵伟 + * @Date: 2025-03-31 16:38:59 + * @Description: 实验可视化 Tensorboard + */ + +import IframePage, { IframePageType } from '@/components/IFramePage'; + +function TensorboardPage() { + return ; +} +export default TensorboardPage; diff --git a/react-ui/src/pages/Experiment/index.jsx b/react-ui/src/pages/Experiment/index.jsx index 1ecc7df1..dc2c03ca 100644 --- a/react-ui/src/pages/Experiment/index.jsx +++ b/react-ui/src/pages/Experiment/index.jsx @@ -2,6 +2,7 @@ import KFIcon from '@/components/KFIcon'; import PageTitle from '@/components/PageTitle'; import { ExperimentStatus, TensorBoardStatus } from '@/enums'; import { useCacheState } from '@/hooks/useCacheState'; +import { useServerTime } from '@/hooks/useServerTime'; import { deleteExperimentById, getExperiment, @@ -17,6 +18,7 @@ import { getWorkflow } from '@/services/pipeline/index.js'; import themes from '@/styles/theme.less'; import { ExperimentCompleted } from '@/utils/constant'; import { to } from '@/utils/promise'; +import SessionStorage from '@/utils/sessionStorage'; import tableCellRender, { TableCellValueType } from '@/utils/table'; import { modalConfirm } from '@/utils/ui'; import { App, Button, ConfigProvider, Dropdown, Input, Space, Table, Tooltip } from 'antd'; @@ -28,7 +30,6 @@ import AddExperimentModal from './components/AddExperimentModal'; import ExperimentInstanceList from './components/ExperimentInstanceList'; import styles from './index.less'; import { experimentStatusInfo } from './status'; -import { useServerTime } from '@/hooks/useServerTime'; // 定时器 const timerIds = new Map(); @@ -372,7 +373,10 @@ function Experiment() { experimentIn.tensorBoardStatus === TensorBoardStatus.Running && experimentIn.tensorboardUrl ) { - window.open(experimentIn.tensorboardUrl, '_blank'); + const url = experimentIn.tensorboardUrl; + SessionStorage.setItem(SessionStorage.tensorBoardUrlKey, url); + navigateToUrl(`/pipeline/experiment/visual`); + // window.open(experimentIn.tensorboardUrl, '_blank'); } }; From 22f85fb3ae2da410711d11edb9cc774971eeeb54 Mon Sep 17 00:00:00 2001 From: cp3hnu Date: Mon, 19 May 2025 11:04:19 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E5=AE=9E=E9=AA=8C=E5=8F=96=E6=B5=81?= =?UTF-8?q?=E6=B0=B4=E7=BA=BF=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/CreateForm/ExecuteConfig.tsx | 5 ++- .../components/AddModelModal/index.tsx | 4 +- react-ui/src/pages/Experiment/Info/index.jsx | 43 ++++++++++++++----- react-ui/src/pages/Mirror/Info/index.tsx | 1 + 4 files changed, 39 insertions(+), 14 deletions(-) diff --git a/react-ui/src/pages/AutoML/components/CreateForm/ExecuteConfig.tsx b/react-ui/src/pages/AutoML/components/CreateForm/ExecuteConfig.tsx index c548e079..a1a34c21 100644 --- a/react-ui/src/pages/AutoML/components/CreateForm/ExecuteConfig.tsx +++ b/react-ui/src/pages/AutoML/components/CreateForm/ExecuteConfig.tsx @@ -292,7 +292,7 @@ function ExecuteConfig() { @@ -419,6 +419,7 @@ function ExecuteConfig() { - + diff --git a/react-ui/src/pages/Dataset/components/AddModelModal/index.tsx b/react-ui/src/pages/Dataset/components/AddModelModal/index.tsx index 7cd6af7a..9e641699 100644 --- a/react-ui/src/pages/Dataset/components/AddModelModal/index.tsx +++ b/react-ui/src/pages/Dataset/components/AddModelModal/index.tsx @@ -126,7 +126,7 @@ function AddModelModal({ typeList, tagList, onOk, ...rest }: AddModelModalProps) { - const experimentNode = experimentStatusObjs?.[item.id]; - updateWorkflowNode(item, experimentNode); - }); + if (experimentStatusObjs) { + workflowData.nodes.forEach((item) => { + const experimentNode = experimentStatusObjs?.[item.id]; + updateWorkflowNode(item, experimentNode); + }); + + // 处理workflow状态 + Object.keys(experimentStatusObjs).some((key) => { + if (key.startsWith(NodePrefix)) { + const workflowStatus = experimentStatusObjs[key]; + setWorkflowStatus(workflowStatus); + return true; + } + return false; + }); + } // 绘制图 getGraphData(workflowData, true); @@ -147,6 +161,15 @@ function ExperimentText() { status: phase, })); + const workflowStatus = Object.values(nodes).find((node) => + node.displayName.startsWith(NodePrefix), + ); + + // 设置工作流状态 + if (workflowStatus) { + setWorkflowStatus(workflowStatus); + } + const workflowData = workflowRef.current; workflowData.nodes.forEach((item) => { const experimentNode = Object.values(nodes).find((node) => node.displayName === item.id); @@ -471,13 +494,13 @@ function ExperimentText() {
- 启动时间:{formatDate(experimentIns?.create_time)} + 启动时间:{formatDate(workflowStatus?.startedAt)}
执行时长:
@@ -488,11 +511,11 @@ function ExperimentText() { height: '8px', borderRadius: '50%', marginRight: '6px', - backgroundColor: experimentStatusInfo[experimentIns?.status]?.color, + backgroundColor: experimentStatusInfo[workflowStatus?.phase]?.color, }} >
- - {experimentStatusInfo[experimentIns?.status]?.label} + + {experimentStatusInfo[workflowStatus?.phase]?.label}