feat(flowEditor): 添加基础循环节点类型支持

master
钟良源 2 weeks ago
parent c339e66f49
commit a9c2425adb

@ -29,7 +29,7 @@ const BasicNode = ({ data, id }: { data: any; id: string }) => {
{title}
<NodeStatusIndicator status={nodeStatus} isVisible={isStatusVisible} />
</div>
<NodeContentOther data={{ ...data, type: 'basic', id }} />
<NodeContentOther data={{ ...data, type: data.type.toLowerCase(), id }} />
</div>
);
};

@ -16,6 +16,7 @@ export const nodeTypes: NodeTypes = {
start: StartNode,
end: EndNode,
BASIC: BasicNode,
BASIC_LOOP: BasicNode,
SUB: BasicNode,
APP: AppNode,
CODE: CodeNode,
@ -31,6 +32,7 @@ export const nodeTypeMap: Record<string, string> = {
'start': 'start',
'end': 'end',
'basic': 'BASIC',
'basic_loop': 'BASIC_LOOP',
'sub': 'SUB',
'app': 'APP',
'code': 'CODE',
@ -46,6 +48,7 @@ export const nodeTypeNameMap: Record<string, string> = {
'start': '开始节点',
'end': '结束节点',
'basic': '基础节点',
'basic_loop': '基础节点',
'sub': '复合节点',
'app': '应用节点',
'code': '代码节点',

@ -91,7 +91,6 @@ const BasicNodeEditor: React.FC<NodeEditorProps> = ({
runType: item.runType
};
});
console.log('newOptions:', newOptions);
setOptions(newOptions);
}
};

@ -17,6 +17,7 @@ export interface NodeEditorProps {
// 节点编辑器映射
export const nodeEditors: Record<string, React.FC<NodeEditorProps>> = {
'basic': BasicNodeEditor,
'basic_loop': BasicNodeEditor,
'start': StartNodeEditor,
'end': EndNodeEditor,
'local': LocalNodeEditor // 用于所有本地节点类型的编辑器

@ -940,7 +940,7 @@ export const useFlowCallbacks = (
customDef: { eventId: emptyEvent.id, name: emptyEvent.name, topic: emptyEvent.topic }
};
}
else if (nodeType === 'BASIC') {
else {
newNode.data.component = {
type: nodeType,
compId: nodeDefinition.id
@ -1079,7 +1079,7 @@ export const useFlowCallbacks = (
customDef: { eventId: emptyEvent?.eventId ?? null, name: emptyEvent.name, topic: emptyEvent.topic }
};
}
else if (nodeType === 'BASIC') {
else {
newNode.data.component = {
type: nodeType,
compId: nodeDefinition.id

@ -20,6 +20,11 @@ const AddNodeMenu: React.FC<AddNodeMenuProps> = ({
const [activeTab, setActiveTab] = useState('common');
const [searchValue, setSearchValue] = useState(''); // 添加搜索状态
const basicNodeType = new Map([
['normal', 'BASIC'],
['loop', 'BASIC_LOOP'] // 这个不是基础组件的loop
]);
// 按分组组织节点数据
const formattedNodes = useCallback(() => {
// 先复制本地节点数据
@ -43,7 +48,7 @@ const AddNodeMenu: React.FC<AddNodeMenuProps> = ({
return {
...v,
nodeName: v.name,
nodeType: 'BASIC',
nodeType: basicNodeType.get(v.type) || 'BASIC',
nodeGroup: 'application',
data: {
parameters: {
@ -113,7 +118,8 @@ const AddNodeMenu: React.FC<AddNodeMenuProps> = ({
if (searchValue) {
const firstTab = getFirstAvailableTab();
setActiveTab(firstTab);
} else {
}
else {
// 如果搜索值为空恢复默认选中tab
setActiveTab('common');
}

@ -207,6 +207,7 @@ const formatFooter = (data: any, eventListOld = []) => {
return `事件: ${name}`;
}
case 'BASIC':
case 'BASIC_LOOP':
return data.compIdentifier ? `当前实例:${data.compIdentifier}` : '';
default:
return '';

@ -242,6 +242,7 @@ const formatFooter = (data: any, eventListOld = []) => {
return `事件: ${name}`;
}
case 'BASIC':
case 'BASIC_LOOP':
return data.compIdentifier ? `当前实例:${data.compIdentifier}` : '';
default:
return '';

@ -65,7 +65,7 @@ const NodeEditModal: React.FC<NodeEditModalProps> = ({
const getNodeEditor = () => {
const nodeType = node?.type || 'basic';
// 检查是否为本地节点通过nodeTypeMap中不存在的类型来判断
const isLocalNode = nodeType && !['start', 'end', 'basic'].includes(nodeType.toLowerCase());
const isLocalNode = nodeType && !['start', 'end', 'basic', 'basic_loop'].includes(nodeType.toLowerCase());
const EditorComponent = getNodeEditorByType(
nodeType.toLowerCase(),

Loading…
Cancel
Save