import { IDataPipelineSelectNode } from '@/components/data-pipeline-select'; import { IconFont } from '@/components/icon-font'; import { RAGFlowAvatar } from '@/components/ragflow-avatar'; import { Button } from '@/components/ui/button'; import { Modal } from '@/components/ui/modal/modal'; import { Link } from 'lucide-react'; import { useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import LinkDataPipelineModal from './link-data-pipline-modal'; export interface IDataPipelineNodeProps extends IDataPipelineSelectNode { isDefault?: boolean; linked?: boolean; } export interface ILinkDataPipelineProps { data?: IDataPipelineNodeProps; handleLinkOrEditSubmit?: (data: IDataPipelineNodeProps | undefined) => void; } interface DataPipelineItemProps extends IDataPipelineNodeProps { openLinkModalFunc?: (open: boolean, data?: IDataPipelineNodeProps) => void; } const DataPipelineItem = (props: DataPipelineItemProps) => { const { t } = useTranslation(); const { name, avatar, isDefault, linked, openLinkModalFunc } = props; const openUnlinkModal = () => { Modal.show({ visible: true, className: '!w-[560px]', title: t('dataflowParser.unlinkPipelineModalTitle'), children: (
), onVisibleChange: () => { Modal.hide(); }, footer: (
), }); }; return (
{name}
{/* {isDefault && (
{t('knowledgeConfiguration.default')}
)} */}
{/*
{!isDefault && ( <> {linked && ( )} )}
*/}
); }; const LinkDataPipeline = (props: ILinkDataPipelineProps) => { const { data, handleLinkOrEditSubmit: submit } = props; const { t } = useTranslation(); const [openLinkModal, setOpenLinkModal] = useState(false); const [currentDataPipeline, setCurrentDataPipeline] = useState(); const pipelineNode: IDataPipelineNodeProps[] = useMemo( () => [ { id: data?.id, name: data?.name, avatar: data?.avatar, isDefault: data?.isDefault, linked: true, }, ], [data], ); const openLinkModalFunc = (open: boolean, data?: IDataPipelineNodeProps) => { console.log('open', open, data); setOpenLinkModal(open); if (data) { setCurrentDataPipeline(data); } else { setCurrentDataPipeline(undefined); } }; const handleLinkOrEditSubmit = ( data: IDataPipelineSelectNode | undefined, ) => { console.log('handleLinkOrEditSubmit', data); submit?.(data); setOpenLinkModal(false); }; return (
{t('knowledgeConfiguration.dataPipeline')}
{t('knowledgeConfiguration.linkPipelineSetTip')}
{pipelineNode.map( (item) => item.id && ( ), )}
{ openLinkModalFunc(open); }} onSubmit={handleLinkOrEditSubmit} />
); }; export default LinkDataPipeline;