diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/utils.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/utils.tsx index 6fefffe4f..34e2faf54 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/utils.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/utils.tsx @@ -1,7 +1,7 @@ import type { API } from '@/services/API'; import { ISemantic } from './data'; import type { DataNode } from 'antd/lib/tree'; -import { Form, Input, InputNumber, Switch, Select } from 'antd'; +import { Form, Input, InputNumber, Switch, Select, Slider } from 'antd'; import FormItemTitle from '@/components/FormHelper/FormItemTitle'; import DisabledWheelNumberInput from '@/components/DisabledWheelNumberInput'; import { ConfigParametersItem } from '../System/types'; @@ -138,7 +138,8 @@ export const findLeafNodesFromDomainList = ( export const genneratorFormItemList = (itemList: ConfigParametersItem[], form) => { const list = itemList.reduce((itemList: ReactNode[], item) => { - const { dataType, name, comment, placeholder, description, require, visible } = item; + const { dataType, name, comment, placeholder, description, require, visible, sliderConfig } = + item; if (visible === false) { return itemList; } @@ -165,6 +166,23 @@ export const genneratorFormItemList = (itemList: ConfigParametersItem[], form) = ); break; + case 'slider': + defaultItem = ( + + ); + break; case 'bool': itemList.push( { const configMap = useRef>(); - const [configIocDepMap, setConfigIocDepMap] = useState({}); + const configIocDepMap = useRef>(); + // const [configIocDepMap, setConfigIocDepMap] = useState({}); useEffect(() => { querySystemConfig(); @@ -30,6 +31,7 @@ const System: React.FC = () => { const [form] = Form.useForm(); const querySystemConfig = async () => { const { code, data, msg } = await getSystemConfig(); + if (code === 200 && data) { const { parameters = [], admins = [] } = data; @@ -57,6 +59,7 @@ const System: React.FC = () => { const initDepConfig = (parameters: ConfigParametersItem[], admins: Admin) => { const iocMap = getDepIoc(parameters); + configIocDepMap.current = iocMap; const initFormValues = setInitData(admins, parameters); Object.keys(initFormValues).forEach((itemName) => { const targetDep = iocMap[itemName] || {}; @@ -65,8 +68,6 @@ const System: React.FC = () => { excuteDepConfig(itemName, initFormValues); } }); - - setConfigIocDepMap(iocMap); }; const groupConfigAndSet = (parameters: ConfigParametersItem[]) => { @@ -145,16 +146,20 @@ const System: React.FC = () => { }; const excuteDepConfig = (itemName: string, formValues: Record) => { - const targetDep = configIocDepMap[itemName] || {}; + const targetDep = configIocDepMap?.current?.[itemName]; + if (!targetDep) { + return; + } const excuteStack = Object.values(targetDep); if (!Array.isArray(excuteStack)) { return; } const tempConfigMap: any = { ...configMap.current }; const currentFormValues = formValues; - const showStateList: boolean[] = []; - const hasValueFieldsSetDefaultValueList: any[] = []; + excuteStack.forEach((configItem: any) => { + const showStateList: boolean[] = []; + const hasValueFieldsSetDefaultValueList: any[] = []; const { dependencies, name: configItemName } = configItem; dependencies.forEach((item: dependenciesItem) => { const { name, setDefaultValue } = item; @@ -170,20 +175,21 @@ const System: React.FC = () => { }); } }); + const visible = showStateList.every((item) => item); tempConfigMap[configItemName].visible = visible; + const lastSetDefaultValueItem = + hasValueFieldsSetDefaultValueList[hasValueFieldsSetDefaultValueList.length - 1]; + const lastSetDefaultValue = lastSetDefaultValueItem?.setDefaultValue; + + if (lastSetDefaultValue) { + const targetValue = lastSetDefaultValue[currentFormValues[lastSetDefaultValueItem.name]]; + if (targetValue) { + form.setFieldValue(lastSetDefaultValueItem.excuteItem, targetValue); + } + } }); - const lastSetDefaultValueItem = - hasValueFieldsSetDefaultValueList[hasValueFieldsSetDefaultValueList.length - 1]; - const lastSetDefaultValue = lastSetDefaultValueItem?.setDefaultValue; - - if (lastSetDefaultValue) { - const targetValue = lastSetDefaultValue[currentFormValues[lastSetDefaultValueItem.name]]; - if (targetValue) { - form.setFieldValue(lastSetDefaultValueItem.excuteItem, targetValue); - } - } groupConfigAndSet(Object.values(tempConfigMap)); }; diff --git a/webapp/packages/supersonic-fe/src/pages/System/types.ts b/webapp/packages/supersonic-fe/src/pages/System/types.ts index 92d140a4f..9645f82f5 100644 --- a/webapp/packages/supersonic-fe/src/pages/System/types.ts +++ b/webapp/packages/supersonic-fe/src/pages/System/types.ts @@ -18,6 +18,17 @@ export type ConfigParametersItem = { placeholder?: string; visible?: boolean; dependencies: dependenciesItem[]; + sliderConfig?: { + start: { + text: string; + value: number; + }; + end: { + text: string; + value: number; + }; + unit: number; + }; }; export type SystemConfig = {