import { useContext } from 'react'; import { useParams } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { makeStyles, Theme } from '@material-ui/core'; import { useNavigationHook } from '@/hooks'; import { ALL_ROUTER_TYPES } from '@/router/Types'; import RouteTabList from '@/components/customTabList/RouteTabList'; import DatabaseTree from '@/pages/databases/tree'; import { ITab } from '@/components/customTabList/Types'; import Partitions from './collections/partitions/Partitions'; import Overview from './collections/overview/Overview'; import Data from './collections/data/Data'; import Segments from './collections/segments/Segments'; import { dataContext, authContext } from '@/context'; import Collections from './collections/Collections'; import StatusIcon, { LoadingType } from '@/components/status/StatusIcon'; import RefreshButton from './RefreshButton'; const useStyles = makeStyles((theme: Theme) => ({ wrapper: { flexDirection: 'row', }, tree: { boxShadow: 'none', flexBasis: theme.spacing(28), width: theme.spacing(28), flexGrow: 0, flexShrink: 0, height: 'calc(100vh - 96px)', overflow: 'auto', boxSizing: 'border-box', padding: theme.spacing(0, 2, 0, 0), }, tab: { flexGrow: 1, flexShrink: 1, overflowX: 'auto', padding: theme.spacing(0, 2), }, })); const Databases = () => { // context const { isManaged } = useContext(authContext); const { database, collections, loading, fetchCollection } = useContext(dataContext); // get current collection from url const params = useParams(); const { databaseName = '', collectionName = '', collectionPage = '', } = params; // refresh collection const refreshCollection = async () => { await fetchCollection(collectionName); }; // get style const classes = useStyles(); // update navigation useNavigationHook(ALL_ROUTER_TYPES.DATABASES, { collectionName, databaseName, extra: , }); // i18n const { t: collectionTrans } = useTranslation('collection'); const dbTab: ITab[] = [ { label: collectionTrans('collections'), component: , path: `collections`, }, ]; const actionDbTab = dbTab.findIndex(t => t.path === databaseName); // collection tabs const collectionTabs: ITab[] = [ { label: collectionTrans('schemaTab'), component: , path: `info`, }, { label: collectionTrans('dataTab'), component: , path: `data`, }, { label: collectionTrans('partitionTab'), component: , path: `partitions`, }, ]; if (!isManaged) { collectionTabs.push({ label: collectionTrans('segmentsTab'), component: , path: `segments`, }); } // get active collection tab const activeColTab = collectionTabs.findIndex(t => t.path === collectionPage); // render return (
{loading ? ( ) : ( )}
{!collectionName && ( )} {collectionName && ( )}
); }; export default Databases;