From 6593af2ff7af0523005e8227928f2ec8e5bb45a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=A5=E5=BF=97=E5=8B=87?= Date: Tue, 13 Aug 2024 01:28:53 +0800 Subject: [PATCH] feat: add slider textarea treeSelect(80%) timePicker --- web/components/flow/node-param-handler.tsx | 25 ++++- web/components/flow/node-renderer/index.ts | 6 +- web/components/flow/node-renderer/slider.tsx | 53 +++++++++++ .../flow/node-renderer/sliderList.tsx | 53 +++++++++++ .../flow/node-renderer/textarea.tsx | 22 +++++ .../flow/node-renderer/timePicker.tsx | 34 +++++++ .../flow/node-renderer/treeSelect.tsx | 95 +++++++++++++++++++ web/types/flow.ts | 7 ++ web/utils/flow.ts | 20 ++++ 9 files changed, 310 insertions(+), 5 deletions(-) create mode 100644 web/components/flow/node-renderer/slider.tsx create mode 100644 web/components/flow/node-renderer/sliderList.tsx create mode 100644 web/components/flow/node-renderer/textarea.tsx create mode 100644 web/components/flow/node-renderer/timePicker.tsx create mode 100644 web/components/flow/node-renderer/treeSelect.tsx diff --git a/web/components/flow/node-param-handler.tsx b/web/components/flow/node-param-handler.tsx index efa3cc67a..adc9181e4 100644 --- a/web/components/flow/node-param-handler.tsx +++ b/web/components/flow/node-param-handler.tsx @@ -4,8 +4,8 @@ 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'; - +import { RenderSelect, RenderSlider, RenderTreeSelect, RenderTimePicker, RenderTextArea, RenderCascader } from './node-renderer'; +import { uiAtrrtUnderlineToHump } from '@/utils/flow' interface NodeParamHandlerProps { node: IFlowNode; data: IFlowNodeParameter; @@ -16,6 +16,7 @@ interface NodeParamHandlerProps { // render node parameters item const NodeParamHandler: React.FC = ({ node, data, label, index }) => { function onChange(value: any) { + console.log(value); data.value = value; } @@ -102,11 +103,26 @@ const NodeParamHandler: React.FC = ({ node, data, label, // render node parameters based on AWEL2.0 function renderNodeWithUiParam(data: IFlowNodeParameter) { let defaultValue = data.value !== null && data.value !== undefined ? data.value : data.default; - + if (data?.ui?.attr) { + uiAtrrtUnderlineToHump(data.ui.attr) + } // TODO: 根据ui_type渲染不同的组件 switch (data?.ui?.ui_type) { case 'select': - return ; + return ; + break + case 'text_area': + return ; + break + case 'slider': + return ; + break + case 'time_picker': + return ; + break + case 'tree_select': + return ; + break } } @@ -118,3 +134,4 @@ const NodeParamHandler: React.FC = ({ node, data, label, }; export default NodeParamHandler; + diff --git a/web/components/flow/node-renderer/index.ts b/web/components/flow/node-renderer/index.ts index d9d116497..163defb9d 100644 --- a/web/components/flow/node-renderer/index.ts +++ b/web/components/flow/node-renderer/index.ts @@ -1,2 +1,6 @@ export * from "./select"; -export * from "./cascader"; \ No newline at end of file +export * from "./cascader"; +export * from "./textarea"; +export * from "./slider"; +export * from "./timePicker"; +export * from "./treeSelect"; \ No newline at end of file diff --git a/web/components/flow/node-renderer/slider.tsx b/web/components/flow/node-renderer/slider.tsx new file mode 100644 index 000000000..5233fdb33 --- /dev/null +++ b/web/components/flow/node-renderer/slider.tsx @@ -0,0 +1,53 @@ +import { IFlowNodeParameter } from "@/types/flow"; +import { Col, InputNumber, Row, Slider, Space } from 'antd'; +import { uiAtrrtUnderlineToHump } from '@/utils/flow' +import type { InputNumberProps } from 'antd'; +import React, { useState } from 'react'; + + +type TextAreaProps = { + data: IFlowNodeParameter; + defaultValue: any; + onChange: (value: any) => void; +} + + + + +export const RenderSlider = (params: TextAreaProps) => { + const { data, defaultValue, onChange } = params; + + const [inputValue, setInputValue] = useState(defaultValue); + + const onChangeSlider: InputNumberProps['onChange'] = (newValue) => { + setInputValue(newValue as number); + onChange(newValue as number) + }; + return ( + <> + {data?.ui?.show_input ? + + + + + + + : + +} + + ) +} diff --git a/web/components/flow/node-renderer/sliderList.tsx b/web/components/flow/node-renderer/sliderList.tsx new file mode 100644 index 000000000..5233fdb33 --- /dev/null +++ b/web/components/flow/node-renderer/sliderList.tsx @@ -0,0 +1,53 @@ +import { IFlowNodeParameter } from "@/types/flow"; +import { Col, InputNumber, Row, Slider, Space } from 'antd'; +import { uiAtrrtUnderlineToHump } from '@/utils/flow' +import type { InputNumberProps } from 'antd'; +import React, { useState } from 'react'; + + +type TextAreaProps = { + data: IFlowNodeParameter; + defaultValue: any; + onChange: (value: any) => void; +} + + + + +export const RenderSlider = (params: TextAreaProps) => { + const { data, defaultValue, onChange } = params; + + const [inputValue, setInputValue] = useState(defaultValue); + + const onChangeSlider: InputNumberProps['onChange'] = (newValue) => { + setInputValue(newValue as number); + onChange(newValue as number) + }; + return ( + <> + {data?.ui?.show_input ? + + + + + + + : + +} + + ) +} diff --git a/web/components/flow/node-renderer/textarea.tsx b/web/components/flow/node-renderer/textarea.tsx new file mode 100644 index 000000000..3fcb6ff80 --- /dev/null +++ b/web/components/flow/node-renderer/textarea.tsx @@ -0,0 +1,22 @@ +import { IFlowNodeParameter } from "@/types/flow"; +import { Input } from 'antd'; +import { uiAtrrtUnderlineToHump } from '@/utils/flow' + +const { TextArea } = Input; + +type TextAreaProps = { + data: IFlowNodeParameter; + defaultValue: any; + onChange: (value: any) => void; +} + + +export const RenderTextArea = (params: TextAreaProps) => { + const { data, defaultValue, onChange } = params; + if(data?.ui?.autosize){ + uiAtrrtUnderlineToHump(data.ui.autosize) + } + return ( +