@@ -12,18 +12,77 @@ 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 ( ) ;
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