From e97b63a4d4f347fa34b8e791397018c336a4b597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=AC=A3?= Date: Thu, 8 Aug 2024 19:27:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E7=BC=96=E6=8E=92=E7=94=BB?= =?UTF-8?q?=E5=B8=83=E6=96=B0=E5=A2=9E=E5=9F=BA=E4=BA=8EAWEL2.0=E7=9A=84Se?= =?UTF-8?q?lect=E7=B1=BB=E5=9E=8B=E8=8A=82=E7=82=B9=E6=B8=B2=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/components/flow/node-param-handler.tsx | 36 ++++++++++++++----- .../flow/node-renderer/cascader.tsx | 3 ++ web/components/flow/node-renderer/index.ts | 2 ++ web/components/flow/node-renderer/select.tsx | 21 +++++++++++ web/types/flow.ts | 9 +++++ 5 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 web/components/flow/node-renderer/cascader.tsx create mode 100644 web/components/flow/node-renderer/index.ts create mode 100644 web/components/flow/node-renderer/select.tsx diff --git a/web/components/flow/node-param-handler.tsx b/web/components/flow/node-param-handler.tsx index c617369cf..d86da6653 100644 --- a/web/components/flow/node-param-handler.tsx +++ b/web/components/flow/node-param-handler.tsx @@ -4,6 +4,7 @@ import React from 'react'; import RequiredIcon from './required-icon'; import NodeHandler from './node-handler'; import { InfoCircleOutlined } from '@ant-design/icons'; +import { RenderSelect, RenderCascader } from './node-renderer'; interface NodeParamHandlerProps { node: IFlowNode; @@ -14,14 +15,14 @@ interface NodeParamHandlerProps { // render node parameters item const NodeParamHandler: React.FC = ({ node, data, label, index }) => { - function handleChange(value: any) { + function onChange(value: any) { data.value = value; } - if (data.category === 'resource') { - return ; - } else if (data.category === 'common') { + // 基于AWEL1.0的流程设计器,对节点参数的渲染 + function renderNodeWithoutUiParam(data: IFlowNodeParameter) { let defaultValue = data.value !== null && data.value !== undefined ? data.value : data.default; + switch (data.type_name) { case 'int': case 'float': @@ -39,7 +40,7 @@ const NodeParamHandler: React.FC = ({ node, data, label, className="w-full" defaultValue={defaultValue} onChange={(value: number | null) => { - handleChange(value); + onChange(value); }} /> @@ -60,20 +61,20 @@ const NodeParamHandler: React.FC = ({ node, data, label, className="w-full nodrag" defaultValue={defaultValue} options={data.options.map((item: any) => ({ label: item.label, value: item.value }))} - onChange={handleChange} + onChange={onChange} /> ) : ( { - handleChange(e.target.value); + onChange(e.target.value); }} /> )} ); - case 'bool': + case 'checkbox': defaultValue = defaultValue === 'False' ? false : defaultValue; defaultValue = defaultValue === 'True' ? true : defaultValue; return ( @@ -89,7 +90,7 @@ const NodeParamHandler: React.FC = ({ node, data, label, className="ml-2" defaultChecked={defaultValue} onChange={(e) => { - handleChange(e.target.checked); + onChange(e.target.checked); }} />

@@ -97,6 +98,23 @@ const NodeParamHandler: React.FC = ({ node, data, label, ); } } + + // 基于AWEL2.0的流程设计器,对节点参数的渲染 + function renderNodeWithUiParam(data: IFlowNodeParameter) { + let defaultValue = data.value !== null && data.value !== undefined ? data.value : data.default; + + // TODO: 根据ui_type渲染不同的组件 + switch (data?.ui?.ui_type) { + case 'select': + return ; + } + } + + if (data.category === 'resource') { + return ; + } else if (data.category === 'common') { + return data?.ui ? renderNodeWithUiParam(data) : renderNodeWithoutUiParam(data); + } }; export default NodeParamHandler; diff --git a/web/components/flow/node-renderer/cascader.tsx b/web/components/flow/node-renderer/cascader.tsx new file mode 100644 index 000000000..605105a93 --- /dev/null +++ b/web/components/flow/node-renderer/cascader.tsx @@ -0,0 +1,3 @@ +import { IFlowNodeParameter } from '@/types/flow'; + +export const RenderCascader = (props: IFlowNodeParameter) => {}; diff --git a/web/components/flow/node-renderer/index.ts b/web/components/flow/node-renderer/index.ts new file mode 100644 index 000000000..d9d116497 --- /dev/null +++ b/web/components/flow/node-renderer/index.ts @@ -0,0 +1,2 @@ +export * from "./select"; +export * from "./cascader"; \ No newline at end of file diff --git a/web/components/flow/node-renderer/select.tsx b/web/components/flow/node-renderer/select.tsx new file mode 100644 index 000000000..897d18522 --- /dev/null +++ b/web/components/flow/node-renderer/select.tsx @@ -0,0 +1,21 @@ +import { IFlowNodeParameter } from "@/types/flow"; +import { Select } from "antd"; + +type SelectProps = { + data: IFlowNodeParameter; + defaultValue: any; + onChange: (value: any) => void; +} + +export const RenderSelect = (params: SelectProps) => { + const { data, defaultValue, onChange } = params; + + return data.options?.length > 0 && ( +