refactor(admin): consolidate 10 flat tabs into 4 grouped tabs with sub-tabs, remove Bestellungen tab, replace Debug with FDISK Sync
This commit is contained in:
@@ -56,16 +56,10 @@ interface NavigationItem {
|
||||
}
|
||||
|
||||
const adminSubItems: SubItem[] = [
|
||||
{ text: 'Services', path: '/admin?tab=0' },
|
||||
{ text: 'System', path: '/admin?tab=1' },
|
||||
{ text: 'Benutzer', path: '/admin?tab=2' },
|
||||
{ text: 'Broadcast', path: '/admin?tab=3' },
|
||||
{ text: 'Banner', path: '/admin?tab=4' },
|
||||
{ text: 'Wartung', path: '/admin?tab=5' },
|
||||
{ text: 'Berechtigungen', path: '/admin?tab=6' },
|
||||
{ text: 'Bestellungen', path: '/admin?tab=7' },
|
||||
{ text: 'Datenverwaltung', path: '/admin?tab=8' },
|
||||
{ text: 'Debug', path: '/admin?tab=9' },
|
||||
{ text: 'Information', path: '/admin?tab=0' },
|
||||
{ text: 'System Mitteilungen', path: '/admin?tab=1' },
|
||||
{ text: 'Tool Zugriff', path: '/admin?tab=2' },
|
||||
{ text: 'Daten', path: '/admin?tab=3' },
|
||||
];
|
||||
|
||||
const baseNavigationItems: NavigationItem[] = [
|
||||
|
||||
@@ -9,9 +9,8 @@ import NotificationBroadcastTab from '../components/admin/NotificationBroadcastT
|
||||
import BannerManagementTab from '../components/admin/BannerManagementTab';
|
||||
import ServiceModeTab from '../components/admin/ServiceModeTab';
|
||||
import PermissionMatrixTab from '../components/admin/PermissionMatrixTab';
|
||||
import BestellungenTab from '../components/admin/BestellungenTab';
|
||||
import DataManagementTab from '../components/admin/DataManagementTab';
|
||||
import DebugTab from '../components/admin/DebugTab';
|
||||
import FdiskSyncTab from '../components/admin/FdiskSyncTab';
|
||||
import { usePermissionContext } from '../contexts/PermissionContext';
|
||||
|
||||
interface TabPanelProps {
|
||||
@@ -25,7 +24,19 @@ function TabPanel({ children, value, index }: TabPanelProps) {
|
||||
return <Box sx={{ pt: 3 }}>{children}</Box>;
|
||||
}
|
||||
|
||||
const ADMIN_TAB_COUNT = 10;
|
||||
function SubTabs({ labels, children }: { labels: string[]; children: React.ReactNode[] }) {
|
||||
const [subTab, setSubTab] = useState(0);
|
||||
return (
|
||||
<Box>
|
||||
<Tabs value={subTab} onChange={(_e, v) => setSubTab(v)} sx={{ mb: 2, borderBottom: 1, borderColor: 'divider' }}>
|
||||
{labels.map((l) => <Tab key={l} label={l} />)}
|
||||
</Tabs>
|
||||
{children.map((child, i) => subTab === i ? <Box key={i}>{child}</Box> : null)}
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
const ADMIN_TAB_COUNT = 4;
|
||||
|
||||
function AdminDashboard() {
|
||||
const navigate = useNavigate();
|
||||
@@ -51,48 +62,32 @@ function AdminDashboard() {
|
||||
|
||||
<Box sx={{ borderBottom: 1, borderColor: 'divider' }}>
|
||||
<Tabs value={tab} onChange={(_e, v) => { setTab(v); navigate(`/admin?tab=${v}`, { replace: true }); }} variant="scrollable" scrollButtons="auto">
|
||||
<Tab label="Services" />
|
||||
<Tab label="System" />
|
||||
<Tab label="Benutzer" />
|
||||
<Tab label="Broadcast" />
|
||||
<Tab label="Banner" />
|
||||
<Tab label="Wartung" />
|
||||
<Tab label="Berechtigungen" />
|
||||
<Tab label="Bestellungen" />
|
||||
<Tab label="Datenverwaltung" />
|
||||
<Tab label="Debug" />
|
||||
<Tab label="Information" />
|
||||
<Tab label="System Mitteilungen" />
|
||||
<Tab label="Tool Zugriff" />
|
||||
<Tab label="Daten" />
|
||||
</Tabs>
|
||||
</Box>
|
||||
|
||||
<TabPanel value={tab} index={0}>
|
||||
<ServiceManagerTab />
|
||||
<SubTabs labels={['Services', 'System', 'Benutzer']}>
|
||||
{[<ServiceManagerTab />, <SystemHealthTab />, <UserOverviewTab />]}
|
||||
</SubTabs>
|
||||
</TabPanel>
|
||||
<TabPanel value={tab} index={1}>
|
||||
<SystemHealthTab />
|
||||
<SubTabs labels={['Broadcast', 'Banner']}>
|
||||
{[<NotificationBroadcastTab />, <BannerManagementTab />]}
|
||||
</SubTabs>
|
||||
</TabPanel>
|
||||
<TabPanel value={tab} index={2}>
|
||||
<UserOverviewTab />
|
||||
<SubTabs labels={['Wartung', 'Berechtigungen']}>
|
||||
{[<ServiceModeTab />, <PermissionMatrixTab />]}
|
||||
</SubTabs>
|
||||
</TabPanel>
|
||||
<TabPanel value={tab} index={3}>
|
||||
<NotificationBroadcastTab />
|
||||
</TabPanel>
|
||||
<TabPanel value={tab} index={4}>
|
||||
<BannerManagementTab />
|
||||
</TabPanel>
|
||||
<TabPanel value={tab} index={5}>
|
||||
<ServiceModeTab />
|
||||
</TabPanel>
|
||||
<TabPanel value={tab} index={6}>
|
||||
<PermissionMatrixTab />
|
||||
</TabPanel>
|
||||
<TabPanel value={tab} index={7}>
|
||||
<BestellungenTab />
|
||||
</TabPanel>
|
||||
<TabPanel value={tab} index={8}>
|
||||
<DataManagementTab />
|
||||
</TabPanel>
|
||||
<TabPanel value={tab} index={9}>
|
||||
<DebugTab />
|
||||
<SubTabs labels={['Datenverwaltung', 'FDISK Sync']}>
|
||||
{[<DataManagementTab />, <FdiskSyncTab />]}
|
||||
</SubTabs>
|
||||
</TabPanel>
|
||||
</DashboardLayout>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user