Skip to content

Commit aeb1e41

Browse files
authored
Merge pull request #2184 from Northeastern-Electric-Racing/#2128-admin-tools-tab-design
#2128 admin tools tabs
2 parents a721053 + 2bda950 commit aeb1e41

1 file changed

Lines changed: 66 additions & 7 deletions

File tree

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

Lines changed: 66 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,77 @@ 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();
21+
const [tabIndex, setTabIndex] = useState<number>(0);
22+
23+
const isUserHead = isHead(currentUser.role);
24+
const isUserAdmin = isAdmin(currentUser.role);
25+
const isUserFinanceLead = currentUser.isAtLeastFinanceLead;
26+
27+
const defaultTab = isUserAdmin || isUserHead ? 'user-management' : 'finance-configuration';
28+
29+
const tabs = [];
30+
31+
if (isUserHead || isUserAdmin) {
32+
tabs.push({ tabUrlValue: 'user-management', tabName: 'User Management' });
33+
tabs.push({ tabUrlValue: 'project-configuration', tabName: 'Project Configuration' });
34+
}
35+
if (isUserAdmin || isUserFinanceLead) {
36+
tabs.push({ tabUrlValue: 'finance-configuration', tabName: 'Finance Configuration' });
37+
}
38+
if (isUserAdmin) {
39+
tabs.push({ tabUrlValue: 'miscellaneous', tabName: 'Miscellaneous' });
40+
}
41+
42+
const UserManagementTab = () => {
43+
return isUserAdmin ? (
44+
<>
45+
<AdminToolsUserManagement />
46+
<TeamsTools />
47+
</>
48+
) : (
49+
<AdminToolsUserManagement />
50+
);
51+
};
52+
53+
const ProjectConfigurationTab = () => {
54+
return isUserAdmin ? (
55+
<>
56+
<AdminToolsProjectsConfig />
57+
<AdminToolsBOMConfig />
58+
</>
59+
) : (
60+
<AdminToolsProjectsConfig />
61+
);
62+
};
1863

1964
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 />}
65+
<PageLayout
66+
title="Admin Tools"
67+
tabs={
68+
<NERTabs
69+
setTab={setTabIndex}
70+
tabsLabels={tabs}
71+
baseUrl={routes.ADMIN_TOOLS}
72+
defaultTab={defaultTab}
73+
id="admin-tools-tabs"
74+
/>
75+
}
76+
>
77+
{tabIndex === 0 ? (
78+
<UserManagementTab />
79+
) : tabIndex === 1 ? (
80+
<ProjectConfigurationTab />
81+
) : tabIndex === 2 ? (
82+
<AdminToolsFinanceConfig />
83+
) : (
84+
<AdminToolsSlackUpcomingDeadlines />
85+
)}
2786
</PageLayout>
2887
);
2988
};

0 commit comments

Comments
 (0)