pref(flowEditor): 优化节点时长展示和编辑功能

- 重构 formatFooter 函数,支持 WAIT 和 CYCLE 类型的节点时长展示
- 优化 WaitEditor 组件,直接使用 customDef 对象而非字符串解析
- 提高代码可维护性,为未来扩展其他节点类型做准备
master
钟良源 5 months ago
parent 943ac9e648
commit e189ffeb4d

@ -179,17 +179,19 @@ const renderRegularNodeHandles = (dataIns: any[], dataOuts: any[], apiIns: any[]
}; };
const formatFooter = (data: any) => { const formatFooter = (data: any) => {
// TODO 这里后续需要优化 console.log('formatFooter', data);
if (isJSON(data)) { switch (data.type) {
const { duration } = JSON.parse(data); case 'WAIT':
const hours = Math.floor(duration / 3600); const { duration } = data.customDef;
const minutes = Math.floor((duration % 3600) / 60); const hours = Math.floor(duration / 3600);
const seconds = Math.floor(duration % 60); const minutes = Math.floor((duration % 3600) / 60);
return `${hours}小时${minutes}分钟${seconds}`; const seconds = Math.floor(duration % 60);
} return `${hours}小时${minutes}分钟${seconds}`;
else { case 'CYCLE':
const keyMap = ['intervalSeconds']; const { intervalSeconds } = data.customDef;
return cronstrue.toString(data.intervalSeconds, { locale: 'zh_CN' }); return cronstrue.toString(intervalSeconds, { locale: 'zh_CN' });
default:
return '这个类型还没开发';
} }
}; };
@ -199,7 +201,7 @@ const NodeContent = ({ data }: { data: NodeContentData }) => {
const dataIns = data.parameters?.dataIns || []; const dataIns = data.parameters?.dataIns || [];
const dataOuts = data.parameters?.dataOuts || []; const dataOuts = data.parameters?.dataOuts || [];
const showFooter = data?.component?.customDef || false; const showFooter = data?.component?.customDef || false;
const footerData = (showFooter && data.component?.customDef) || {}; const footerData = (showFooter && data.component) || {};
// 判断节点类型 // 判断节点类型
const isStartNode = data.type === 'start'; const isStartNode = data.type === 'start';

@ -25,7 +25,7 @@ const WaitEditor: React.FC<NodeEditorProps> = ({ nodeData, updateNodeData }) =>
useEffect(() => { useEffect(() => {
if (nodeData?.component?.customDef) { if (nodeData?.component?.customDef) {
const duration = JSON.parse(nodeData.component.customDef).duration; const duration = nodeData.component.customDef.duration;
setDuration({ setDuration({
hour: Math.floor(duration / 3600), hour: Math.floor(duration / 3600),
minute: Math.floor((duration % 3600) / 60), minute: Math.floor((duration % 3600) / 60),
@ -42,7 +42,7 @@ const WaitEditor: React.FC<NodeEditorProps> = ({ nodeData, updateNodeData }) =>
time time
}); });
updateNodeData('component', { updateNodeData('component', {
customDef: JSON.stringify({ duration: time }), customDef: { duration: time },
type: 'WAIT' type: 'WAIT'
}); });
}; };

Loading…
Cancel
Save