Skip to content

Commit 15a6d7a

Browse files
committed
#2128 scuffed implementation for tabs
1 parent ee22db0 commit 15a6d7a

1 file changed

Lines changed: 70 additions & 7 deletions

File tree

src/frontend/src/pages/AdminToolsPage/AdminToolsPage.tsx

Lines changed: 70 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,81 @@ import AdminToolsFinanceConfig from './AdminToolsFinanceConfig';
1212
import TeamsTools from './TeamsTools';
1313
import AdminToolsBOMConfig from './AdminToolsBOMConfig';
1414
import AdminToolsProjectsConfig from './AdminToolsProjectsConfig';
15+
import { useState } from 'react';
16+
import NERTabs from '../../components/Tabs';
17+
import { routes } from '../../utils/routes';
1518

1619
const AdminToolsPage: React.FC = () => {
1720
const currentUser = useCurrentUser();
1821

22+
const [tabIndex, setTabIndex] = useState<number>(0);
23+
24+
/*
25+
User Management Tab
26+
{isHead(currentUser.role) && <AdminToolsUserManagement />}
27+
{isAdmin(currentUser.role) && <TeamsTools />}
28+
29+
Project Configuration Tab
30+
{isAdmin(currentUser.role) && <AdminToolsBOMConfig />}
31+
{isHead(currentUser.role) && <AdminToolsProjectsConfig />}
32+
33+
34+
35+
Finance Configuration Tab
36+
{(isAdmin(currentUser.role) || currentUser.isAtLeastFinanceLead) && <AdminToolsFinanceConfig />}
37+
38+
39+
Miscellaneous Tab
40+
{isAdmin(currentUser.role) && <AdminToolsSlackUpcomingDeadlines />}
41+
*/
42+
43+
const isUserHead = isHead(currentUser.role);
44+
const isUserAdmin = isAdmin(currentUser.role);
45+
const isUserFinanceLead = currentUser.isAtLeastFinanceLead;
46+
47+
const defaultTab = isUserAdmin || isUserHead ? 'user-management' : 'finance-configuration';
48+
49+
const tabs = [
50+
{ tabUrlValue: 'user-management', tabName: 'User Management', roles: ['head', 'admin'] },
51+
{ tabUrlValue: 'project-configuration', tabName: 'Project Configuration', roles: ['head', 'admin'] },
52+
{ tabUrlValue: 'finance-configuration', tabName: 'Finance Configuration', roles: ['financeLead', 'admin'] },
53+
{ tabUrlValue: 'miscellaneous', tabName: 'Miscellaneous', roles: ['admin'] }
54+
];
55+
56+
const userRole = isUserAdmin ? 'admin' : isUserHead ? 'head' : isUserFinanceLead ? 'financeLead' : 'user';
57+
58+
const filteredTabs = tabs.filter((tab) => tab.roles.includes(userRole));
59+
60+
const showUserManagement = () => {
61+
return isUserAdmin ? <TeamsTools /> : <AdminToolsUserManagement />;
62+
};
63+
64+
const showProjectConfiguration = () => {
65+
return isUserAdmin ? <AdminToolsBOMConfig /> : <AdminToolsProjectsConfig />;
66+
};
67+
1968
return (
20-
<PageLayout title="Admin Tools">
21-
{isHead(currentUser.role) && <AdminToolsUserManagement />}
22-
{isAdmin(currentUser.role) && <AdminToolsSlackUpcomingDeadlines />}
23-
{(isAdmin(currentUser.role) || currentUser.isAtLeastFinanceLead) && <AdminToolsFinanceConfig />}
24-
{isAdmin(currentUser.role) && <TeamsTools />}
25-
{isAdmin(currentUser.role) && <AdminToolsBOMConfig />}
26-
{isHead(currentUser.role) && <AdminToolsProjectsConfig />}
69+
<PageLayout
70+
title="Admin Tools"
71+
tabs={
72+
<NERTabs
73+
setTab={setTabIndex}
74+
tabsLabels={filteredTabs}
75+
baseUrl={routes.ADMIN_TOOLS}
76+
defaultTab={defaultTab}
77+
id="admin-tabs"
78+
/>
79+
}
80+
>
81+
{tabIndex === 0 ? (
82+
showUserManagement()
83+
) : tabIndex === 1 ? (
84+
showProjectConfiguration()
85+
) : tabIndex === 2 ? (
86+
<AdminToolsFinanceConfig />
87+
) : (
88+
<AdminToolsSlackUpcomingDeadlines />
89+
)}
2790
</PageLayout>
2891
);
2992
};

0 commit comments

Comments
 (0)