@@ -12,18 +12,81 @@ import AdminToolsFinanceConfig from './AdminToolsFinanceConfig';
1212import TeamsTools from './TeamsTools' ;
1313import AdminToolsBOMConfig from './AdminToolsBOMConfig' ;
1414import AdminToolsProjectsConfig from './AdminToolsProjectsConfig' ;
15+ import { useState } from 'react' ;
16+ import NERTabs from '../../components/Tabs' ;
17+ import { routes } from '../../utils/routes' ;
1518
1619const 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