import { IconFontFill } from '@/components/icon-font'; import { Button } from '@/components/ui/button'; import { Switch } from '@/components/ui/switch'; import { Tooltip, TooltipContent, TooltipTrigger, } from '@/components/ui/tooltip'; import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks'; import { IConnector } from '@/interfaces/database/knowledge'; import { delSourceModal } from '@/pages/user-setting/data-source/component/delete-source-modal'; import { useDataSourceInfo } from '@/pages/user-setting/data-source/contant'; import { useDataSourceRebuild } from '@/pages/user-setting/data-source/hooks'; import { IDataSourceBase } from '@/pages/user-setting/data-source/interface'; import { Link, Settings, Unlink } from 'lucide-react'; import { useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import LinkDataSourceModal from './link-data-source-modal'; export type IDataSourceNodeProps = IConnector & { icon: React.ReactNode; }; export interface ILinkDataSourceProps { data?: IConnector[]; handleLinkOrEditSubmit?: (data: IDataSourceBase[] | undefined) => void; unbindFunc?: (item: DataSourceItemProps) => void; handleAutoParse?: (option: { source_id: string; isAutoParse: boolean; }) => void; } interface DataSourceItemProps extends IDataSourceNodeProps { openLinkModalFunc?: (open: boolean, data?: IDataSourceNodeProps) => void; unbindFunc?: (item: DataSourceItemProps) => void; handleAutoParse?: (option: { source_id: string; isAutoParse: boolean; }) => void; } const DataSourceItem = (props: DataSourceItemProps) => { const { dataSourceInfo } = useDataSourceInfo(); const { t } = useTranslation(); const { id, name, icon, source, auto_parse, unbindFunc, handleAutoParse } = props; const { navigateToDataSourceDetail } = useNavigatePage(); const { handleRebuild } = useDataSourceRebuild(); const toDetail = (id: string) => { navigateToDataSourceDetail(id); }; return (
{icon}
{dataSourceInfo[source].name}
{name}
{t('knowledgeConfiguration.autoParse')}
{ handleAutoParse?.({ source_id: id, isAutoParse }); }} className="w-8 h-4" />
{t('knowledgeConfiguration.rebuildTip')} <>
); }; const LinkDataSource = (props: ILinkDataSourceProps) => { const { data, handleLinkOrEditSubmit: submit, unbindFunc, handleAutoParse, } = props; const { t } = useTranslation(); const { dataSourceInfo } = useDataSourceInfo(); const [openLinkModal, setOpenLinkModal] = useState(false); const pipelineNode: IDataSourceNodeProps[] = useMemo(() => { if (data && data.length > 0) { return data.map((item) => { return { ...item, id: item?.id, name: item?.name, icon: dataSourceInfo[item?.source as keyof typeof dataSourceInfo]?.icon || '', } as IDataSourceNodeProps; }); } return []; }, [data]); const openLinkModalFunc = (open: boolean, data?: IDataSourceNodeProps) => { console.log('open', open, data); setOpenLinkModal(open); // if (data) { // setCurrentDataSource(data); // } else { // setCurrentDataSource(undefined); // } }; const handleLinkOrEditSubmit = (data: IDataSourceBase[] | undefined) => { console.log('handleLinkOrEditSubmit', data); submit?.(data); setOpenLinkModal(false); }; return (
{t('knowledgeConfiguration.dataSource')}
{/*
{t('knowledgeConfiguration.dataSource')}
*/}
{t('knowledgeConfiguration.linkSourceSetTip')}
{pipelineNode.map( (item) => item.id && ( ), )}
{ openLinkModalFunc(open); }} onSubmit={handleLinkOrEditSubmit} />
); }; export default LinkDataSource;