mirror of
https://github.com/labring/FastGPT.git
synced 2025-08-05 22:55:27 +00:00

* perf: i18n * perf: i18n and img tip * perf: readme * perf: hide tool ai response * fix: copy app * fix: parse image url regx * perf: folder collection forbid update
105 lines
3.6 KiB
TypeScript
105 lines
3.6 KiB
TypeScript
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 (
|
|
<>
|
|
<NextHead title={datasetDetail?.name} icon={datasetDetail?.avatar} />
|
|
<PageContainer insertProps={{ bg: 'white' }}>
|
|
<MyBox display={'flex'} flexDirection={['column', 'row']} h={'100%'} pt={[4, 0]}>
|
|
<Slider currentTab={currentTab} />
|
|
|
|
{!!datasetDetail._id && (
|
|
<Box flex={'1 0 0'} pb={0} overflow={'auto'}>
|
|
{currentTab === TabEnum.collectionCard && (
|
|
<CollectionPageContextProvider>
|
|
<CollectionCard />
|
|
</CollectionPageContextProvider>
|
|
)}
|
|
{currentTab === TabEnum.dataCard && <DataCard />}
|
|
{currentTab === TabEnum.test && <Test datasetId={datasetId} />}
|
|
{currentTab === TabEnum.info && <Info datasetId={datasetId} />}
|
|
{currentTab === TabEnum.import && <Import />}
|
|
</Box>
|
|
)}
|
|
</MyBox>
|
|
</PageContainer>
|
|
</>
|
|
);
|
|
};
|
|
|
|
const Render = (data: Props) => (
|
|
<DatasetPageContextProvider datasetId={data.datasetId}>
|
|
<Detail {...data} />
|
|
</DatasetPageContextProvider>
|
|
);
|
|
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']))
|
|
}
|
|
};
|
|
}
|