import React, { useCallback } from 'react'; import { useTranslation } from 'next-i18next'; import { useDatasetStore } from '@/web/core/dataset/store/dataset'; import { useUserStore } from '@/web/support/user/useUserStore'; import { Box, Flex, IconButton, useTheme, Progress } from '@chakra-ui/react'; import { useSystemStore } from '@/web/common/system/useSystemStore'; import Avatar from '@/components/Avatar'; import { DatasetTypeMap } from '@fastgpt/global/core/dataset/constants'; import DatasetTypeTag from '@/components/core/dataset/DatasetTypeTag'; import MyIcon from '@fastgpt/web/components/common/Icon'; import SideTabs from '@/components/SideTabs'; import { useRouter } from 'next/router'; import Tabs from '@/components/Tabs'; import { useContextSelector } from 'use-context-selector'; import { DatasetPageContext } from '@/web/core/dataset/context/datasetPageContext'; import { useI18n } from '@/web/context/I18n'; export enum TabEnum { dataCard = 'dataCard', collectionCard = 'collectionCard', test = 'test', info = 'info', import = 'import' } const Slider = ({ currentTab }: { currentTab: TabEnum }) => { const theme = useTheme(); const { t } = useTranslation(); const { datasetT } = useI18n(); const router = useRouter(); const query = router.query; const { userInfo } = useUserStore(); const { isPc } = useSystemStore(); const { datasetDetail, vectorTrainingMap, agentTrainingMap, rebuildingCount } = useContextSelector(DatasetPageContext, (v) => v); const tabList = [ { label: t('core.dataset.Collection'), id: TabEnum.collectionCard, icon: 'common/overviewLight' }, { label: t('core.dataset.test.Search Test'), id: TabEnum.test, icon: 'kbTest' }, ...(userInfo?.team.canWrite && datasetDetail.isOwner ? [{ label: t('common.Config'), id: TabEnum.info, icon: 'common/settingLight' }] : []) ]; const setCurrentTab = useCallback( (tab: TabEnum) => { router.replace({ query: { ...query, currentTab: tab } }); }, [query, router] ); return ( <> {isPc ? ( {datasetDetail.name} {DatasetTypeMap[datasetDetail.type] && ( )} { setCurrentTab(e); }} /> {rebuildingCount > 0 && ( {datasetT('Rebuilding index count', { count: rebuildingCount })} )} {t('core.dataset.training.Agent queue')}({agentTrainingMap.tip}) {t('core.dataset.training.Vector queue')}({vectorTrainingMap.tip}) router.replace('/dataset/list')} > } bg={'white'} boxShadow={'1px 1px 9px rgba(0,0,0,0.15)'} size={'smSquare'} borderRadius={'50%'} aria-label={''} /> {t('core.dataset.All Dataset')} ) : ( ({ id: item.id, label: item.label }))} activeId={currentTab} onChange={(e: any) => setCurrentTab(e)} /> )} ); }; export default Slider;