mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-07-30 07:11:56 +00:00
chore: update SaveFlowModal component to use useRouter hook and add useEffect for id state
This commit is contained in:
parent
f978a50565
commit
d07cce603a
@ -2,8 +2,8 @@ import { addFlow, apiInterceptors, updateFlowById } from '@/client/api';
|
|||||||
import { IFlowData, IFlowUpdateParam } from '@/types/flow';
|
import { IFlowData, IFlowUpdateParam } from '@/types/flow';
|
||||||
import { mapHumpToUnderline } from '@/utils/flow';
|
import { mapHumpToUnderline } from '@/utils/flow';
|
||||||
import { Button, Checkbox, Form, Input, Modal, Space, message } from 'antd';
|
import { Button, Checkbox, Form, Input, Modal, Space, message } from 'antd';
|
||||||
import { useSearchParams } from 'next/navigation';
|
import { useRouter } from 'next/router';
|
||||||
import { useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { ReactFlowInstance } from 'reactflow';
|
import { ReactFlowInstance } from 'reactflow';
|
||||||
|
|
||||||
@ -22,13 +22,18 @@ export const SaveFlowModal: React.FC<Props> = ({
|
|||||||
flowInfo,
|
flowInfo,
|
||||||
setIsSaveFlowModalOpen,
|
setIsSaveFlowModalOpen,
|
||||||
}) => {
|
}) => {
|
||||||
const [deploy, setDeploy] = useState(true);
|
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const searchParams = useSearchParams();
|
const router = useRouter();
|
||||||
const id = searchParams?.get('id') || '';
|
|
||||||
const [form] = Form.useForm<IFlowUpdateParam>();
|
const [form] = Form.useForm<IFlowUpdateParam>();
|
||||||
const [messageApi, contextHolder] = message.useMessage();
|
const [messageApi, contextHolder] = message.useMessage();
|
||||||
|
|
||||||
|
const [deploy, setDeploy] = useState(true);
|
||||||
|
const [id, setId] = useState(router.query.id || '');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setId(router.query.id || '');
|
||||||
|
}, [router.query.id]);
|
||||||
|
|
||||||
function onLabelChange(e: React.ChangeEvent<HTMLInputElement>) {
|
function onLabelChange(e: React.ChangeEvent<HTMLInputElement>) {
|
||||||
const label = e.target.value;
|
const label = e.target.value;
|
||||||
// replace spaces with underscores, convert uppercase letters to lowercase, remove characters other than digits, letters, _, and -.
|
// replace spaces with underscores, convert uppercase letters to lowercase, remove characters other than digits, letters, _, and -.
|
||||||
@ -45,12 +50,12 @@ export const SaveFlowModal: React.FC<Props> = ({
|
|||||||
|
|
||||||
if (id) {
|
if (id) {
|
||||||
const [, , res] = await apiInterceptors(
|
const [, , res] = await apiInterceptors(
|
||||||
updateFlowById(id, {
|
updateFlowById(id.toString(), {
|
||||||
name,
|
name,
|
||||||
label,
|
label,
|
||||||
description,
|
description,
|
||||||
editable,
|
editable,
|
||||||
uid: id,
|
uid: id.toString(),
|
||||||
flow_data: reactFlowObject,
|
flow_data: reactFlowObject,
|
||||||
state,
|
state,
|
||||||
}),
|
}),
|
||||||
@ -72,10 +77,10 @@ export const SaveFlowModal: React.FC<Props> = ({
|
|||||||
state,
|
state,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (res?.uid) {
|
if (res?.uid) {
|
||||||
messageApi.success(t('save_flow_success'));
|
messageApi.success(t('save_flow_success'));
|
||||||
const history = window.history;
|
router.push(`/construct/flow/canvas?id=${res.uid}`, undefined, { shallow: true });
|
||||||
history.pushState(null, '', `/flow/canvas?id=${res.uid}`);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setIsSaveFlowModalOpen(false);
|
setIsSaveFlowModalOpen(false);
|
||||||
|
@ -16,4 +16,5 @@ export const FlowEn = {
|
|||||||
Export_File_Format: 'File_Format',
|
Export_File_Format: 'File_Format',
|
||||||
Yes: 'Yes',
|
Yes: 'Yes',
|
||||||
No: 'No',
|
No: 'No',
|
||||||
|
Please_Add_Nodes_First: 'Please add nodes first',
|
||||||
};
|
};
|
||||||
|
@ -16,4 +16,5 @@ export const FlowZn = {
|
|||||||
Export_File_Format: '文件格式',
|
Export_File_Format: '文件格式',
|
||||||
Yes: '是',
|
Yes: '是',
|
||||||
No: '否',
|
No: '否',
|
||||||
|
Please_Add_Nodes_First: '请先添加节点',
|
||||||
};
|
};
|
||||||
|
@ -30,6 +30,7 @@ const edgeTypes = { buttonedge: ButtonEdge };
|
|||||||
|
|
||||||
const Canvas: React.FC = () => {
|
const Canvas: React.FC = () => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const [messageApi, contextHolder] = message.useMessage();
|
||||||
|
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const id = searchParams?.get('id') || '';
|
const id = searchParams?.get('id') || '';
|
||||||
@ -152,22 +153,24 @@ const Canvas: React.FC = () => {
|
|||||||
function onSave() {
|
function onSave() {
|
||||||
const flowData = reactFlow.toObject() as IFlowData;
|
const flowData = reactFlow.toObject() as IFlowData;
|
||||||
const [check, node, message] = checkFlowDataRequied(flowData);
|
const [check, node, message] = checkFlowDataRequied(flowData);
|
||||||
|
|
||||||
|
if (!node) {
|
||||||
|
messageApi.open({
|
||||||
|
type: 'warning',
|
||||||
|
content: t('Please_Add_Nodes_First'),
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!check && message) {
|
if (!check && message) {
|
||||||
setNodes(nds =>
|
setNodes(nds =>
|
||||||
nds.map(item => {
|
nds.map(item => ({
|
||||||
if (item.id === node?.id) {
|
...item,
|
||||||
item.data = {
|
data: {
|
||||||
...item.data,
|
...item.data,
|
||||||
invalid: true,
|
invalid: item.id === node?.id,
|
||||||
};
|
},
|
||||||
} else {
|
})),
|
||||||
item.data = {
|
|
||||||
...item.data,
|
|
||||||
invalid: false,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return item;
|
|
||||||
}),
|
|
||||||
);
|
);
|
||||||
return notification.error({
|
return notification.error({
|
||||||
message: 'Error',
|
message: 'Error',
|
||||||
@ -274,6 +277,8 @@ const Canvas: React.FC = () => {
|
|||||||
isImportModalOpen={isImportModalOpen}
|
isImportModalOpen={isImportModalOpen}
|
||||||
setIsImportFlowModalOpen={setIsImportFlowModalOpen}
|
setIsImportFlowModalOpen={setIsImportFlowModalOpen}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
{contextHolder}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user