chore: diff envs in editing deployment

This commit is contained in:
jialin
2026-02-12 19:38:47 +08:00
parent d1c1c5acf9
commit 16c0e00b4f
6 changed files with 196 additions and 34 deletions
+28 -2
View File
@@ -10,6 +10,7 @@ import { backendTipsList } from '../config';
import { backendOptionsMap } from '../config/backend-parameters';
import { useFormContext } from '../config/form-context';
import useCompareEnvs from '../hooks/use-compare-envs';
import EnvsOverridePopover from './envs-override-popover';
const CaretDownWrapper = styled.span`
display: flex;
@@ -30,6 +31,7 @@ const BackendFields: React.FC = () => {
const form = Form.useFormInstance();
const {
action,
initialValues,
onValuesChange,
backendOptions,
flatBackendOptions,
@@ -37,9 +39,15 @@ const BackendFields: React.FC = () => {
} = useFormContext();
const backend = Form.useWatch('backend', form);
const [showDeprecated, setShowDeprecated] = React.useState<boolean>(false);
const { openTips, handleToggleTips, handleCompareEnvs } = useCompareEnvs();
const { openTips, diffEnvs, handleCloseTips, handleCompareEnvs } =
useCompareEnvs();
const handleBackendVersionOnChange = (value: any, option: any) => {
// const oldEnvs = _.get(initialValues, 'env', {});
// const newEnvs = option.data?.env || {};
// handleCompareEnvs(oldEnvs, newEnvs);
if (Object.keys(option.data?.env || {}).length > 0) {
form.setFieldValue('env', { ...(option?.data?.env || {}) });
}
@@ -160,6 +168,14 @@ const BackendFields: React.FC = () => {
);
};
const handleOnSaveEnvsOverride = (envs: Record<string, any>) => {
form.setFieldsValue({
env: { ...envs }
});
onValuesChange?.({}, form.getFieldsValue());
handleCloseTips();
};
const optionRender = (option: any) => {
return option.data.title;
};
@@ -198,7 +214,17 @@ const BackendFields: React.FC = () => {
></SealSelect>
</Form.Item>
{backendOptionsMap.custom !== backend && (
<Form.Item name="backend_version">
<Form.Item
name="backend_version"
help={
openTips && (
<EnvsOverridePopover
onSave={handleOnSaveEnvsOverride}
diffEnvs={diffEnvs}
></EnvsOverridePopover>
)
}
>
<SealSelect
allowClear
showSearch