import { useMemo, useContext } from 'react';
import { useNavigate, useLocation, useParams } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { makeStyles, Theme } from '@material-ui/core';
import { authContext } from '@/context/Auth';
import { useNavigationHook } from '@/hooks/Navigation';
import { ALL_ROUTER_TYPES } from '@/router/Types';
import CustomTabList from '@/components/customTabList/CustomTabList';
import { ITab } from '@/components/customTabList/Types';
import Partitions from '../partitions/Partitions';
import { parseLocationSearch } from '@/utils/Format';
import Schema from '../schema/Schema';
import Query from '../query/Query';
import Preview from '../preview/Preview';
import { TAB_ENUM } from './Types';
const useStyles = makeStyles((theme: Theme) => ({
wrapper: {
flexDirection: 'row',
gap: theme.spacing(4),
},
card: {
boxShadow: 'none',
flexBasis: theme.spacing(28),
width: theme.spacing(28),
flexGrow: 0,
flexShrink: 0,
},
tab: {
flexGrow: 1,
flexShrink: 1,
overflowX: 'auto',
},
}));
const Collection = () => {
const classes = useStyles();
const { isManaged } = useContext(authContext);
const { collectionName = '' } = useParams<{
collectionName: string;
}>();
useNavigationHook(ALL_ROUTER_TYPES.COLLECTION_DETAIL, { collectionName });
const navigate = useNavigate();
const location = useLocation();
const { t: collectionTrans } = useTranslation('collection');
const activeTabIndex = useMemo(() => {
const { activeIndex } = location.search
? parseLocationSearch(location.search)
: { activeIndex: TAB_ENUM.schema };
return Number(activeIndex);
}, [location]);
const handleTabChange = (activeIndex: number) => {
const path = location.pathname;
navigate(`${path}?activeIndex=${activeIndex}`);
};
const tabs: ITab[] = [
{
label: collectionTrans('schemaTab'),
component: ,
},
{
label: collectionTrans('partitionTab'),
component: ,
},
{
label: collectionTrans('previewTab'),
component: ,
},
{
label: collectionTrans('queryTab'),
component: ,
},
];
// exclude parititon on cloud
if (isManaged) {
tabs.splice(1, 1);
}
return (
);
};
export default Collection;