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

master
钟良源 2 weeks ago
parent c339e66f49
commit a9c2425adb

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

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

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

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

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

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

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

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

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

Loading…
Cancel
Save