From 2db37419dcf51c68cdcf6a303ee124645a23826b Mon Sep 17 00:00:00 2001 From: hetao92 <18328704+hetao92@users.noreply.github.com> Date: Thu, 30 Mar 2023 07:19:49 +0000 Subject: [PATCH 1/2] fix: fix schema configuration validate UI problem --- .../SchemaConfig/PropertiesForm.tsx | 22 ++++++++++++------- .../SchemaConfig/index.module.less | 4 ++++ .../SketchModeling/SchemaConfig/index.tsx | 7 ++++++ 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/app/pages/SketchModeling/SchemaConfig/PropertiesForm.tsx b/app/pages/SketchModeling/SchemaConfig/PropertiesForm.tsx index a4606252..be6021d6 100644 --- a/app/pages/SketchModeling/SchemaConfig/PropertiesForm.tsx +++ b/app/pages/SketchModeling/SchemaConfig/PropertiesForm.tsx @@ -58,8 +58,18 @@ const PropertiesForm = (props: IProps) => { const properties = getFieldValue('properties') || []; return (
- - {(fields, { add, remove }) => { + { + const names = properties.map((item) => item.name); + if(names.length !== new Set(names).size) { + return Promise.reject(intl.get('schema.uniqProperty')); + } + return Promise.resolve(); + }, + }, + ]}> + {(fields, { add, remove }, { errors }) => { return (
@@ -90,12 +100,7 @@ const PropertiesForm = (props: IProps) => { name={[name, 'name']} {...restField} {...itemLayout} - rules={[...nameRulesFn(), () => ({ validator: (_, value) => { - if (!value || properties.filter((item, i) => item.name === value && i !== index).length === 0) { - return Promise.resolve(); - } - return Promise.reject(intl.get('schema.uniqProperty')); - } })]} + rules={[...nameRulesFn()]} > @@ -153,6 +158,7 @@ const PropertiesForm = (props: IProps) => { /> + ))} diff --git a/app/pages/SketchModeling/SchemaConfig/index.module.less b/app/pages/SketchModeling/SchemaConfig/index.module.less index 9673eacf..17f7857b 100644 --- a/app/pages/SketchModeling/SchemaConfig/index.module.less +++ b/app/pages/SketchModeling/SchemaConfig/index.module.less @@ -71,6 +71,10 @@ height: 60px; } } + .errors { + position: relative; + top: -13px; + } .label { display: inline-block; font-weight: 500; diff --git a/app/pages/SketchModeling/SchemaConfig/index.tsx b/app/pages/SketchModeling/SchemaConfig/index.tsx index d7c11025..dc3a0cf6 100644 --- a/app/pages/SketchModeling/SchemaConfig/index.tsx +++ b/app/pages/SketchModeling/SchemaConfig/index.tsx @@ -105,6 +105,12 @@ const SchemaConfig: React.FC = () => { return null; } + const handleCheck = (changedValues) => { + const { properties } = changedValues; + if (properties && properties.some(i => i.name !== undefined)) { + form.validateFields([['properties']]); + } + }; const { type, name, comment, properties } = active; return ( @@ -123,6 +129,7 @@ const SchemaConfig: React.FC = () => { form={form} className={styles.configForm} initialValues={{ name, comment, properties }} + onValuesChange={handleCheck} onFieldsChange={handleUpdate} name="form" layout="vertical" From af6ae3f7695f29e5e33a9ecb9b96ba25a15da960 Mon Sep 17 00:00:00 2001 From: hetao92 <18328704+hetao92@users.noreply.github.com> Date: Fri, 31 Mar 2023 03:23:04 +0000 Subject: [PATCH 2/2] mod: code review --- .../SchemaConfig/PropertiesForm.tsx | 125 +++++++++--------- 1 file changed, 64 insertions(+), 61 deletions(-) diff --git a/app/pages/SketchModeling/SchemaConfig/PropertiesForm.tsx b/app/pages/SketchModeling/SchemaConfig/PropertiesForm.tsx index be6021d6..1a20e63e 100644 --- a/app/pages/SketchModeling/SchemaConfig/PropertiesForm.tsx +++ b/app/pages/SketchModeling/SchemaConfig/PropertiesForm.tsx @@ -61,7 +61,7 @@ const PropertiesForm = (props: IProps) => { { - const names = properties.map((item) => item.name); + const names = properties.map((item) => item.name).filter(Boolean); if(names.length !== new Set(names).size) { return Promise.reject(intl.get('schema.uniqProperty')); } @@ -92,76 +92,79 @@ const PropertiesForm = (props: IProps) => { )} - {fields.map(({ key, name, ...restField }, index) => ( - - - - - - - - - - - - {fields?.[index] && properties[index].type === 'fixed_string' && ( + + + + - + - )} - - - -