Browse Source

fix: 流水线模板配置参数修改,历史实验实例配置参数变换

pull/261/head
zhaowei 8 months ago
parent
commit
fddb63d293
2 changed files with 51 additions and 32 deletions
  1. +47
    -32
      react-ui/src/pages/Experiment/Info/index.jsx
  2. +4
    -0
      react-ui/src/pages/ModelDeployment/components/ServerLog/index.less

+ 47
- 32
react-ui/src/pages/Experiment/Info/index.jsx View File

@@ -3,7 +3,6 @@ import { ExperimentStatus } from '@/enums';
import { useStateRef } from '@/hooks/useStateRef'; import { useStateRef } from '@/hooks/useStateRef';
import { useVisible } from '@/hooks/useVisible'; import { useVisible } from '@/hooks/useVisible';
import { getExperimentIns } from '@/services/experiment/index.js'; import { getExperimentIns } from '@/services/experiment/index.js';
import { getWorkflowById } from '@/services/pipeline/index.js';
import themes from '@/styles/theme.less'; import themes from '@/styles/theme.less';
import { fittingString, parseJsonText } from '@/utils'; import { fittingString, parseJsonText } from '@/utils';
import { formatDate } from '@/utils/date'; import { formatDate } from '@/utils/date';
@@ -40,7 +39,7 @@ function ExperimentText() {


useEffect(() => { useEffect(() => {
initGraph(); initGraph();
getWorkflow();
getExperimentInstance();


return () => { return () => {
if (evtSourceRef.current) { if (evtSourceRef.current) {
@@ -66,38 +65,54 @@ function ExperimentText() {
}, []); }, []);


// 获取流水线模版 // 获取流水线模版
const getWorkflow = async () => {
const [res] = await to(getWorkflowById(locationParams.workflowId));
if (res && res.data && res.data.dag) {
try {
const dag = JSON.parse(res.data.dag);
dag.nodes.forEach((item) => {
item.in_parameters = JSON.parse(item.in_parameters);
item.out_parameters = JSON.parse(item.out_parameters);
item.control_strategy = JSON.parse(item.control_strategy);
item.imgName = item.img.slice(0, item.img.length - 4);
});
workflowRef.current = dag;
getExperimentInstance();
} catch (error) {
// JSON.parse 错误
console.error('JSON.parse error: ', error);
}
}
};
// const getWorkflow = async () => {
// const [res] = await to(getWorkflowById(locationParams.workflowId));
// if (res && res.data && res.data.dag) {
// try {
// const dag = JSON.parse(res.data.dag);
// dag.nodes.forEach((item) => {
// item.in_parameters = JSON.parse(item.in_parameters);
// item.out_parameters = JSON.parse(item.out_parameters);
// item.control_strategy = JSON.parse(item.control_strategy);
// item.imgName = item.img.slice(0, item.img.length - 4);
// });
// workflowRef.current = dag;
// getExperimentInstance();
// } catch (error) {
// // JSON.parse 错误
// console.error('JSON.parse error: ', error);
// }
// }
// };


// 获取实验实例 // 获取实验实例
const getExperimentInstance = async () => { const getExperimentInstance = async () => {
const [res] = await to(getExperimentIns(locationParams.id)); const [res] = await to(getExperimentIns(locationParams.id));
if (res && res.data && workflowRef.current) {
if (res && res.data) {
setExperimentIns(res.data); setExperimentIns(res.data);
const { status, nodes_status, argo_ins_ns, argo_ins_name, finish_time } = res.data;
const workflowData = workflowRef.current;
const { status, nodes_status, argo_ins_ns, argo_ins_name, finish_time, dag } = res.data;
if (!dag) {
return;
}

const workflow = parseJsonText(dag);
const experimentStatusObjs = parseJsonText(nodes_status); const experimentStatusObjs = parseJsonText(nodes_status);
if (!workflow || !workflow.nodes) {
return;
}

workflow.nodes.forEach((item) => {
item.in_parameters = parseJsonText(item.in_parameters);
item.out_parameters = parseJsonText(item.out_parameters);
item.control_strategy = parseJsonText(item.control_strategy);
item.imgName = item.img.slice(0, item.img.length - 4);
});
workflowRef.current = workflow;

if (experimentStatusObjs) { if (experimentStatusObjs) {
// 更新各个节点 // 更新各个节点
workflowData.nodes.forEach((item) => {
const experimentNode = experimentStatusObjs?.[item.id];
workflow.nodes.forEach((item) => {
const experimentNode = experimentStatusObjs[item.id];
updateWorkflowNode(item, experimentNode); updateWorkflowNode(item, experimentNode);
}); });


@@ -113,11 +128,11 @@ function ExperimentText() {
} }


// 绘制图 // 绘制图
getGraphData(workflowData, true);
getGraphData(workflow, true);


if (status === ExperimentStatus.Pending) { if (status === ExperimentStatus.Pending) {
// 如果状态是 Pending, 打开第一个节点 // 如果状态是 Pending, 打开第一个节点
const node = workflowData.nodes[0];
const node = workflow.nodes[0];
if (node) { if (node) {
setExperimentNodeData(node); setExperimentNodeData(node);
openPropsDrawer(); openPropsDrawer();
@@ -125,8 +140,8 @@ function ExperimentText() {
} else if (status === ExperimentStatus.Running) { } else if (status === ExperimentStatus.Running) {
// 如果状态是 Running,打开第一个运行中的节点,如果没有运行中的节点,则打开第一个节点 // 如果状态是 Running,打开第一个运行中的节点,如果没有运行中的节点,则打开第一个节点
const node = const node =
workflowData.nodes.find((item) => item.experimentStatus === ExperimentStatus.Running) ??
workflowData.nodes[0];
workflow.nodes.find((item) => item.experimentStatus === ExperimentStatus.Running) ??
workflow.nodes[0];
if (node) { if (node) {
setExperimentNodeData(node); setExperimentNodeData(node);
openPropsDrawer(); openPropsDrawer();
@@ -153,13 +168,13 @@ function ExperimentText() {
return; return;
} }
try { try {
const dataJson = JSON.parse(data);
const dataJson = parseJsonText(data);
const statusData = dataJson?.result?.object?.status; const statusData = dataJson?.result?.object?.status;
if (!statusData) { if (!statusData) {
return; return;
} }
const { finishedAt, phase, nodes = {} } = statusData; const { finishedAt, phase, nodes = {} } = statusData;
// 更新实验实例状态和结束时间 // 更新实验实例状态和结束时间
// setExperimentIns((prev) => ({ // setExperimentIns((prev) => ({
// ...prev, // ...prev,


+ 4
- 0
react-ui/src/pages/ModelDeployment/components/ServerLog/index.less View File

@@ -20,5 +20,9 @@
&__more { &__more {
padding: 20px 0; padding: 20px 0;
} }

&::-webkit-scrollbar-thumb {
background: rgba(255, 255, 255, 0.5);
}
} }
} }

Loading…
Cancel
Save