import React, { useState } from 'react'; import { ModalBody, useTheme, ModalFooter, Button, Box, Card, Flex, Grid } from '@chakra-ui/react'; import { useTranslation } from 'next-i18next'; import Avatar from '../Avatar'; import MyIcon from '@/components/Icon'; import { DatasetTypeEnum } from '@fastgpt/global/core/dataset/constant'; import DatasetSelectModal, { useDatasetSelect } from '@/components/core/dataset/SelectModal'; import dynamic from 'next/dynamic'; import { MarkDataType } from '@/global/core/dataset/type'; import SelectCollections from '@/web/core/dataset/components/SelectCollections'; const InputDataModal = dynamic(() => import('@/pages/dataset/detail/components/InputDataModal')); export type AdminMarkType = { dataId?: string; datasetId?: string; collectionId?: string; q: string; a?: string; }; const SelectMarkCollection = ({ adminMarkData, setAdminMarkData, onSuccess, onClose }: { adminMarkData: AdminMarkType; setAdminMarkData: (e: AdminMarkType) => void; onClose: () => void; onSuccess: (adminFeedback: MarkDataType) => void; }) => { const { t } = useTranslation(); const theme = useTheme(); const [selectedDatasetId, setSelectedDatasetId] = useState(); const [selectedDatasetCollectionIds, setSelectedDatasetCollectionIds] = useState([]); const { paths, parentId, setParentId, datasets, isLoading } = useDatasetSelect(); return ( <> {/* select dataset */} {!adminMarkData.datasetId && ( {datasets.map((item) => (() => { const selected = selectedDatasetId === item._id; return ( { if (item.type === DatasetTypeEnum.folder) { setParentId(item._id); } else { setSelectedDatasetId(item._id); } }} > {item.name} {item.vectorModel.name} ); })() )} {datasets.length === 0 && ( 这个目录已经没东西可选了~ )} )} {/* select collection */} {adminMarkData.datasetId && !adminMarkData.collectionId && ( { setSelectedDatasetCollectionIds(collectionIds); }} CustomFooter={ } /> )} {/* input data */} {adminMarkData.datasetId && adminMarkData.collectionId && ( { if (!data.q || !adminMarkData.datasetId || !adminMarkData.collectionId || !data.id) { return onClose(); } onSuccess({ dataId: data.id, datasetId: adminMarkData.datasetId, collectionId: adminMarkData.collectionId, q: data.q, a: data.a }); onClose(); }} /> )} ); }; export default React.memo(SelectMarkCollection);