diff --git a/web/client/api/flow/index.ts b/web/client/api/flow/index.ts index 7f32ac1d9..67c6462e4 100644 --- a/web/client/api/flow/index.ts +++ b/web/client/api/flow/index.ts @@ -35,8 +35,8 @@ export const deleteFlowById = (id: string) => { return DELETE(`/api/v2/serve/awel/flows/${id}`); }; -export const getFlowNodes = () => { - return GET>(`/api/v2/serve/awel/nodes`); +export const getFlowNodes = (tags?: string) => { + return GET<{ tags?: string }, Array>(`/api/v2/serve/awel/nodes`, { tags }); }; export const refreshFlowNodeById = (data: IFlowRefreshParams) => { diff --git a/web/components/flow/add-nodes-sider.tsx b/web/components/flow/add-nodes-sider.tsx index b5a5f6d3c..b35170916 100644 --- a/web/components/flow/add-nodes-sider.tsx +++ b/web/components/flow/add-nodes-sider.tsx @@ -4,7 +4,7 @@ import { IFlowNode } from '@/types/flow'; import { FLOW_NODES_KEY } from '@/utils'; import { CaretLeftOutlined, CaretRightOutlined } from '@ant-design/icons'; import type { CollapseProps } from 'antd'; -import { Badge, Collapse, Input, Layout, Space } from 'antd'; +import { Badge, Collapse, Input, Layout, Space, Tag } from 'antd'; import React, { useContext, useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import StaticNodes from './static-nodes'; @@ -41,13 +41,14 @@ const AddNodesSider: React.FC = () => { const [resources, setResources] = useState>([]); const [operatorsGroup, setOperatorsGroup] = useState([]); const [resourcesGroup, setResourcesGroup] = useState([]); + const [isAdvancedMode, setIsAdvancedMode] = useState(false); useEffect(() => { getNodes(); }, []); - async function getNodes() { - const [_, data] = await apiInterceptors(getFlowNodes()); + async function getNodes(tags?: string) { + const [_, data] = await apiInterceptors(getFlowNodes(tags)); if (data && data.length > 0) { localStorage.setItem(FLOW_NODES_KEY, JSON.stringify(data)); const operatorNodes = data.filter(node => node.flow_type === 'operator'); @@ -166,6 +167,17 @@ const AddNodesSider: React.FC = () => { setSearchValue(val); } + function onModeChange() { + setIsAdvancedMode(!isAdvancedMode); + + if (!isAdvancedMode) { + const tags = JSON.stringify({ order: 'higher-order' }); + getNodes(tags); + } else { + getNodes(); + } + } + return ( { onCollapse={collapsed => setCollapsed(collapsed)} > -

- {t('add_node')} -

+
+

+ {t('add_node')} +

+ + {isAdvancedMode ? ( + + {t('Advanced_Mode')} + + ) : ( + + {t('Default_Mode')} + + )} + + {/* */} +
diff --git a/web/components/flow/canvas-node.tsx b/web/components/flow/canvas-node.tsx index 37449337d..aa0378c2f 100644 --- a/web/components/flow/canvas-node.tsx +++ b/web/components/flow/canvas-node.tsx @@ -142,7 +142,7 @@ const CanvasNode: React.FC = ({ data }) => { return (
- {(outputs || []).map((output, index) => ( + {outputs?.map((output, index) => (