From c6cc5810ca66c4f7f72587014257a3e5a2d18568 Mon Sep 17 00:00:00 2001 From: jialin Date: Thu, 20 Feb 2025 11:03:52 +0800 Subject: [PATCH] feat: add env field in deploy form --- src/components/label-selector/index.tsx | 1 - src/components/label-selector/inner.tsx | 6 +-- src/components/list-input/index.tsx | 6 +-- src/locales/en-US/common.ts | 6 ++- src/locales/en-US/models.ts | 1 + src/locales/zh-CN/common.ts | 2 + src/locales/zh-CN/models.ts | 1 + .../llmodels/components/advance-config.tsx | 42 +++++++++++++++++++ src/pages/llmodels/config/types.ts | 1 + 9 files changed, 55 insertions(+), 11 deletions(-) diff --git a/src/components/label-selector/index.tsx b/src/components/label-selector/index.tsx index 7407d905..a3f343f7 100644 --- a/src/components/label-selector/index.tsx +++ b/src/components/label-selector/index.tsx @@ -33,7 +33,6 @@ const LabelSelector: React.FC = ({ }); setLabelList(list); } - console.log('labelsData=========', labelsData); }, [labels]); const handleLabelListChange = useCallback( diff --git a/src/components/label-selector/inner.tsx b/src/components/label-selector/inner.tsx index 37c0afaf..9d45eb18 100644 --- a/src/components/label-selector/inner.tsx +++ b/src/components/label-selector/inner.tsx @@ -26,6 +26,7 @@ const Inner: React.FC = ({ }) => { const intl = useIntl(); const buttonRef = useRef(null); + const boxRef = useRef(null); const updateLabels = (list: { key: string; value: string }[]) => { const newLabels = _.reduce( @@ -57,11 +58,6 @@ const Inner: React.FC = ({ ]; onLabelListChange(newLabelList); updateLabels(newLabelList); - - setTimeout(() => { - // button scroll to view - buttonRef.current?.scrollIntoView?.({ behavior: 'smooth' }); - }, 100); }; const handleOnDelete = (index: string) => { diff --git a/src/components/list-input/index.tsx b/src/components/list-input/index.tsx index a6964448..05de9f29 100644 --- a/src/components/list-input/index.tsx +++ b/src/components/list-input/index.tsx @@ -51,9 +51,9 @@ const ListInput: React.FC = (props) => { uid: countRef.current }); setList(values); - setTimeout(() => { - buttonRef.current?.scrollIntoView?.({ behavior: 'smooth' }); - }, 100); + // setTimeout(() => { + // buttonRef.current?.scrollIntoView?.({ behavior: 'smooth' }); + // }, 100); }; React.useEffect(() => { diff --git a/src/locales/en-US/common.ts b/src/locales/en-US/common.ts index f6e9a793..37906950 100644 --- a/src/locales/en-US/common.ts +++ b/src/locales/en-US/common.ts @@ -213,9 +213,11 @@ export default { 'common.title.stop.confirm': 'Confirm stop', 'common.title.start.confirm': 'Confirm start', 'common.title.recreate.confirm': 'Confirm recreate', - 'common.button.addLabel': 'Add Labels', - 'common.button.addSelector': 'Add Selectors', + 'common.button.addLabel': 'Add Label', + 'common.button.addSelector': 'Add Selector', 'common.button.addParams': 'Add Parameter', + 'common.button.vars': 'Add Variable', + 'common.text.variable': 'Variable', 'common.text.here': 'here', 'common.text.latest': 'Latest', 'common.text.new': 'New', diff --git a/src/locales/en-US/models.ts b/src/locales/en-US/models.ts index 739c23d7..88a9a3f2 100644 --- a/src/locales/en-US/models.ts +++ b/src/locales/en-US/models.ts @@ -10,6 +10,7 @@ export default { 'models.form.filename': 'File Name', 'models.form.replicas': 'Replicas', 'models.form.selector': 'Selector', + 'models.form.env': 'Environment Variables', 'models.form.configurations': 'Configurations', 'models.form.s3address': 'S3 Address', 'models.form.partialoffload.tips': diff --git a/src/locales/zh-CN/common.ts b/src/locales/zh-CN/common.ts index ad05a553..240bba5f 100644 --- a/src/locales/zh-CN/common.ts +++ b/src/locales/zh-CN/common.ts @@ -209,6 +209,8 @@ export default { 'common.button.addLabel': '添加标签', 'common.button.addSelector': '添加选择器', 'common.button.addParams': '添加参数', + 'common.button.vars': '添加变量', + 'common.text.variable': '变量', 'common.text.here': '这里', 'common.text.latest': '最新', 'common.text.new': '新', diff --git a/src/locales/zh-CN/models.ts b/src/locales/zh-CN/models.ts index dfe9fb83..86900154 100644 --- a/src/locales/zh-CN/models.ts +++ b/src/locales/zh-CN/models.ts @@ -10,6 +10,7 @@ export default { 'models.form.filename': '文件名', 'models.form.replicas': '副本数', 'models.form.selector': '选择器', + 'models.form.env': '环境变量', 'models.form.configurations': '配置', 'models.form.s3address': 'S3 地址', 'models.form.partialoffload.tips': diff --git a/src/pages/llmodels/components/advance-config.tsx b/src/pages/llmodels/components/advance-config.tsx index 50cc7085..043739b8 100644 --- a/src/pages/llmodels/components/advance-config.tsx +++ b/src/pages/llmodels/components/advance-config.tsx @@ -43,6 +43,7 @@ const AdvanceConfig: React.FC = (props) => { const intl = useIntl(); const wokerSelector = Form.useWatch('worker_selector', form); + const EnviromentVars = Form.useWatch('env', form); const scheduleType = Form.useWatch('scheduleType', form); const backend = Form.useWatch('backend', form); const backend_parameters = Form.useWatch('backend_parameters', form); @@ -118,6 +119,12 @@ const AdvanceConfig: React.FC = (props) => { }, [] ); + const handleEnviromentVarsChange = useCallback( + (labels: Record) => { + form.setFieldValue('env', labels); + }, + [] + ); const handleBackendParametersChange = useCallback((list: string[]) => { form.setFieldValue('backend_parameters', list); @@ -201,6 +208,41 @@ const AdvanceConfig: React.FC = (props) => { } > + + name="env" + rules={[ + () => ({ + validator(rule, value) { + if (_.keys(value).length > 0) { + if (_.some(_.keys(value), (k: string) => !value[k])) { + return Promise.reject( + intl.formatMessage( + { + id: 'common.validate.value' + }, + { + name: intl.formatMessage({ + id: 'common.text.variable' + }) + } + ) + ); + } + } + return Promise.resolve(); + } + }) + ]} + > + + name="worker_selector" rules={[ diff --git a/src/pages/llmodels/config/types.ts b/src/pages/llmodels/config/types.ts index 26b44f2f..62cdfde5 100644 --- a/src/pages/llmodels/config/types.ts +++ b/src/pages/llmodels/config/types.ts @@ -31,6 +31,7 @@ export interface ListItem { export interface FormData { backend: string; + env?: Record; size?: number; quantization?: number; categories?: string[];