import { useMemo, useContext } from 'react';
import { Outlet, useNavigate, useLocation, Navigate } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import GlobalEffect from '@/components/layout/GlobalEffect';
import Header from '@/components/layout/Header';
import NavMenu from '@/components/menu/NavMenu';
import { NavMenuItem } from '@/components/menu/Types';
import icons from '@/components/icons/Icons';
import { authContext, rootContext, dataContext } from '@/context';
import Overview from '@/pages/home/Home';
import Box from '@mui/material/Box';
function Index() {
const { isAuth, isManaged, isDedicated, authReq } = useContext(authContext);
const { database } = useContext(dataContext);
const { versionInfo } = useContext(rootContext);
const { t: navTrans } = useTranslation('nav');
const navigate = useNavigate();
const location = useLocation();
const navMap = [
{ key: 'databases', label: 'database' },
{ key: 'search', label: 'search' },
{ key: 'system', label: 'system' },
{ key: 'users', label: 'user' },
{ key: 'roles', label: 'user' },
{ key: 'privilege-groups', label: 'user' },
{ key: 'play', label: 'play' },
];
const defaultActive = useMemo(() => {
const found = navMap.find(item => location.pathname.includes(item.key));
return navTrans(found?.label || 'overview');
}, [location.pathname, navTrans]);
const baseMenu: NavMenuItem[] = [
{
icon: icons.attu,
label: navTrans('overview'),
onClick: () => navigate('/'),
},
{
icon: icons.database,
label: navTrans('database'),
onClick: () => navigate(`/databases/${database}/collections`),
},
{
icon: icons.code,
label: navTrans('play'),
onClick: () => navigate('/play'),
},
];
const menuItems = [...baseMenu];
if (!isManaged || isDedicated) {
menuItems.push({
icon: icons.navPerson,
label: navTrans('user'),
onClick: () => navigate('/users'),
});
}
if (!isManaged) {
menuItems.push(
{
icon: icons.navSystem,
label: navTrans('system'),
onClick: () => navigate('/system'),
},
{
icon: icons.newWindow,
label: 'Milvus WebUI',
onClick: () => {
window.open(
`http://${authReq.address.split(':')[0]}:9091/webui`,
'_blank'
);
},
}
);
}
if (!isAuth) {
return ;
}
return (
theme.palette.background.default,
}}
>
{location.pathname === '/' ? : }
);
}
export default Index;