mirror of
				https://github.com/csunny/DB-GPT.git
				synced 2025-10-31 06:39:43 +00:00 
			
		
		
		
	Co-authored-by: Fangyin Cheng <staneyffer@gmail.com> Co-authored-by: 谨欣 <echo.cmy@antgroup.com> Co-authored-by: 严志勇 <yanzhiyong@tiansuixiansheng.com> Co-authored-by: yanzhiyong <932374019@qq.com>
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { apiInterceptors, getFlows } from '@/client/api';
 | |
| import { IFlow } from '@/types/flow';
 | |
| import { Select } from 'antd';
 | |
| import { t } from 'i18next';
 | |
| import Link from 'next/link';
 | |
| import { useEffect, useState } from 'react';
 | |
| import PreviewFlow from '../flow/preview-flow';
 | |
| 
 | |
| interface IProps {
 | |
|   onFlowsChange: (data: any) => void;
 | |
|   teamContext: any;
 | |
| }
 | |
| 
 | |
| export default function DagLayout(props: IProps) {
 | |
|   const { onFlowsChange, teamContext } = props;
 | |
|   const [flows, setFlows] = useState<IFlow[]>();
 | |
|   const [flowsOptions, setFlowsOptions] = useState<any>();
 | |
|   const [curFlow, setCurFlow] = useState<IFlow>();
 | |
|   const fetchFlows = async () => {
 | |
|     const [_, data] = await apiInterceptors(getFlows({}));
 | |
|     if (data) {
 | |
|       setFlowsOptions(data?.items?.map((item: IFlow) => ({ label: item.name, value: item.name })));
 | |
|       setFlows(data.items);
 | |
|       onFlowsChange(data?.items[0]);
 | |
|     }
 | |
|   };
 | |
| 
 | |
|   const handleFlowsChange = (value: string) => {
 | |
|     setCurFlow(flows?.find(item => value === item.name));
 | |
|     onFlowsChange(flows?.find(item => value === item.name));
 | |
|   };
 | |
| 
 | |
|   useEffect(() => {
 | |
|     fetchFlows();
 | |
|   }, []);
 | |
| 
 | |
|   useEffect(() => {
 | |
|     setCurFlow(flows?.find(item => teamContext?.name === item.name) || flows?.[0]);
 | |
|   }, [teamContext, flows]);
 | |
| 
 | |
|   return (
 | |
|     <div className='w-full h-[300px]'>
 | |
|       <div className='mr-24 mb-4 mt-2'>Flows:</div>
 | |
|       <div className='flex items-center mb-6'>
 | |
|         <Select
 | |
|           onChange={handleFlowsChange}
 | |
|           value={curFlow?.name || flowsOptions?.[0]?.value}
 | |
|           className='w-1/4'
 | |
|           options={flowsOptions}
 | |
|         />
 | |
|         <Link href='/flow/canvas/' className='ml-6'>
 | |
|           {t('edit_new_applications')}
 | |
|         </Link>
 | |
|         <div className='text-gray-500 ml-16'>{curFlow?.description}</div>
 | |
|       </div>
 | |
|       {curFlow && (
 | |
|         <div className='w-full h-full border-[0.5px] border-dark-gray'>
 | |
|           <PreviewFlow flowData={curFlow?.flow_data} />
 | |
|         </div>
 | |
|       )}
 | |
|     </div>
 | |
|   );
 | |
| }
 |