import { getNodeResult, getQueryByExperimentLog } from '@/services/experiment/index.js';
import { elapsedTime } from '@/utils/date';
import { downLoadZip } from '@/utils/downloadfile';
import { DatabaseOutlined, ProfileOutlined } from '@ant-design/icons';
import { Drawer, Form, Input, Tabs, message } from 'antd';
import moment from 'moment';
import { forwardRef, useImperativeHandle, useState } from 'react';
import LogList from './LogList';
import Styles from './editPipeline.less';
const { TextArea } = Input;
const Props = forwardRef(({ onParentChange }, ref) => {
const [form] = Form.useForm();
const [stagingItem, setStagingItem] = useState({});
const [resultObj, setResultObj] = useState([]);
const [logList, setLogList] = useState([]);
const statusObj = {
Running: '运行中',
Succeeded: '成功',
Pending: '等待中',
Failed: '失败',
Error: '错误',
Terminated: '终止',
Skipped: '未执行',
Omitted: '未执行',
};
const statusColorObj = {
Running: '#165bff',
Succeeded: '#63a728',
Pending: '#f981eb',
Failed: '#c73131',
Error: '#c73131',
Terminated: '#8a8a8a',
Skipped: '#8a8a8a',
Omitted: '#8a8a8ae',
};
const exportResult = (e, val) => {
const hide = message.loading('正在下载');
hide();
downLoadZip(`/api/mmp/minioStorage/download`, { path: val });
};
const timers = (time) => {
let timer = new Date(time);
let hours = timer.getHours(); //转换成时
let minutes = timer.getMinutes(); //转换成分
let secend = timer.getSeconds(); //转换成秒
let str = `${minutes}分${secend}秒`;
return str;
};
const items = [
{
key: '1',
label: '日志详情',
children: ,
icon: ,
},
{
key: '2',
label: '配置参数',
icon: ,
children: (
任务信息
{stagingItem.control_strategy &&
Object.keys(stagingItem.control_strategy) &&
Object.keys(stagingItem.control_strategy).length > 0
? Object.keys(stagingItem.control_strategy).map((item) => (
))
: ''}
输入参数
{stagingItem.in_parameters &&
Object.keys(stagingItem.in_parameters) &&
Object.keys(stagingItem.in_parameters).length > 0
? Object.keys(stagingItem.in_parameters).map((item) => (
))
: ''}
输出参数
{stagingItem.out_parameters &&
Object.keys(stagingItem.out_parameters) &&
Object.keys(stagingItem.out_parameters).length > 0
? Object.keys(stagingItem.out_parameters).map((item) => (
))
: ''}
),
},
{
key: '3',
label: '输出结果',
children: (
{resultObj && resultObj.length > 0
? resultObj.map((item) => (
文件名称
文件大小
{item.value && item.value.length > 0
? item.value.map((ele) => (
{ele.name}
{ele.size}
))
: null}
))
: null}
),
icon: ,
},
];
const [open, setOpen] = useState(false);
const afterOpenChange = () => {
if (!open) {
console.log(111, open);
console.log(stagingItem, form.getFieldsValue());
for (let i in form.getFieldsValue()) {
for (let j in stagingItem.in_parameters) {
if (i == j) {
console.log(j, i);
stagingItem.in_parameters[j].value = form.getFieldsValue()[i];
}
}
for (let p in stagingItem.out_parameters) {
if (i == p) {
stagingItem.out_parameters[p].value = form.getFieldsValue()[i];
}
}
for (let k in stagingItem.control_strategy) {
if (i == k) {
stagingItem.control_strategy[k].value = form.getFieldsValue()[i];
}
}
}
// setStagingItem({...stagingItem,})
console.log(stagingItem.control_strategy);
onParentChange({
...stagingItem,
control_strategy: JSON.stringify(stagingItem.control_strategy),
in_parameters: JSON.stringify(stagingItem.in_parameters),
out_parameters: JSON.stringify(stagingItem.out_parameters),
...form.getFieldsValue(),
});
// onParentChange({...stagingItem,...form.getFieldsValue()})
}
};
const onClose = () => {
setOpen(false);
};
const onFinish = (values) => {
console.log('Success:', values);
};
const onFinishFailed = (errorInfo) => {
console.log('Failed:', errorInfo);
};
useImperativeHandle(ref, () => ({
showDrawer(e, id, message) {
setLogList([]);
if (e.item && e.item.getModel().component_id) {
const model = e.item.getModel() || {};
const start_time = moment(model.experimentStartTime).valueOf() * 1.0e6;
const params = {
task_id: model.id,
component_id: model.component_id,
name: message.argo_ins_name,
namespace: message.argo_ins_ns,
start_time: start_time,
};
getQueryByExperimentLog(params).then((ret) => {
const { log_type, pods, log_detail } = ret.data;
if (log_type === 'normal') {
const list = [
{
...log_detail,
log_type,
},
];
setLogList(list);
} else if (log_type === 'resource') {
const list = pods.map((v) => ({
log_type,
pod_name: v,
log_content: '',
start_time,
}));
setLogList(list);
}
getNodeResult({ id, node_id: e.item.getModel().id }).then((res) => {
setResultObj(res.data);
form.resetFields();
form.setFieldsValue({
...e.item.getModel(),
in_parameters: JSON.parse(e.item.getModel().in_parameters),
out_parameters: JSON.parse(e.item.getModel().out_parameters),
control_strategy: JSON.parse(e.item.getModel().control_strategy),
});
setStagingItem({
...e.item.getModel(),
in_parameters: JSON.parse(e.item.getModel().in_parameters),
out_parameters: JSON.parse(e.item.getModel().out_parameters),
control_strategy: JSON.parse(e.item.getModel().control_strategy),
});
setOpen(true);
});
});
} else {
form.resetFields();
form.setFieldsValue({
...e.item.getModel(),
in_parameters: JSON.parse(e.item.getModel().in_parameters),
out_parameters: JSON.parse(e.item.getModel().out_parameters),
control_strategy: JSON.parse(e.item.getModel().control_strategy),
});
setStagingItem({
...e.item.getModel(),
in_parameters: JSON.parse(e.item.getModel().in_parameters),
out_parameters: JSON.parse(e.item.getModel().out_parameters),
control_strategy: JSON.parse(e.item.getModel().control_strategy),
});
setOpen(true);
}
// console.log(e.item.getModel().in_parameters);
},
}));
return (
<>
任务名称:{stagingItem.label}
执行状态:
{statusObj[stagingItem.experimentStatus]}
启动时间:{moment(stagingItem.experimentStartTime).format('YYYY-MM-DD HH:mm:ss')}
耗时:
{stagingItem.experimentEndTime
? elapsedTime(
new Date(stagingItem.experimentStartTime),
new Date(stagingItem.experimentEndTime),
)
: elapsedTime(new Date(stagingItem.experimentStartTime), new Date())}
>
);
});
export default Props;