import React from 'react'; import { useRouter } from 'next/router'; import { Box } from '@chakra-ui/react'; import { useToast } from '@fastgpt/web/hooks/useToast'; import { useQuery } from '@tanstack/react-query'; import { getErrText } from '@fastgpt/global/common/error/utils'; import dynamic from 'next/dynamic'; import PageContainer from '@/components/PageContainer'; import { serviceSideProps } from '@/web/common/utils/i18n'; import { useTranslation } from 'next-i18next'; import Slider from './components/Slider'; import MyBox from '@fastgpt/web/components/common/MyBox'; import { DatasetPageContext, DatasetPageContextProvider } from '@/web/core/dataset/context/datasetPageContext'; import CollectionPageContextProvider from './components/CollectionCard/Context'; import { useContextSelector } from 'use-context-selector'; import NextHead from '@/components/common/NextHead'; import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; const CollectionCard = dynamic(() => import('./components/CollectionCard/index')); const DataCard = dynamic(() => import('./components/DataCard')); const Test = dynamic(() => import('./components/Test')); const Info = dynamic(() => import('./components/Info')); const Import = dynamic(() => import('./components/Import')); export enum TabEnum { dataCard = 'dataCard', collectionCard = 'collectionCard', test = 'test', info = 'info', import = 'import' } type Props = { datasetId: string; currentTab: TabEnum }; const Detail = ({ datasetId, currentTab }: Props) => { const { t } = useTranslation(); const { toast } = useToast(); const router = useRouter(); const datasetDetail = useContextSelector(DatasetPageContext, (v) => v.datasetDetail); const loadDatasetDetail = useContextSelector(DatasetPageContext, (v) => v.loadDatasetDetail); const loadAllDatasetTags = useContextSelector(DatasetPageContext, (v) => v.loadAllDatasetTags); useRequest2(() => loadDatasetDetail(datasetId), { onSuccess: () => { loadAllDatasetTags({ id: datasetId }); }, onError(err: any) { router.replace(`/dataset/list`); toast({ title: t(getErrText(err, t('common:common.Load Failed')) as any), status: 'error' }); }, manual: false }); return ( <> {!!datasetDetail._id && ( {currentTab === TabEnum.collectionCard && ( )} {currentTab === TabEnum.dataCard && } {currentTab === TabEnum.test && } {currentTab === TabEnum.info && } {currentTab === TabEnum.import && } )} ); }; const Render = (data: Props) => ( ); export default Render; export async function getServerSideProps(context: any) { const currentTab = context?.query?.currentTab || TabEnum.collectionCard; const datasetId = context?.query?.datasetId; return { props: { currentTab, datasetId, ...(await serviceSideProps(context, ['dataset', 'file', 'user'])) } }; }