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

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

Loading…
Cancel
Save