import { useHistory, useParams } from 'react-router'; import { useCommonStyles } from '../../../common.styles'; import useProject from '../../../hooks/api/getters/useProject/useProject'; import useLoading from '../../../hooks/useLoading'; import ApiError from '../../common/ApiError/ApiError'; import ConditionallyRender from '../../common/ConditionallyRender'; import { useStyles } from './Project.styles'; import { IconButton, Tab, Tabs } from '@material-ui/core'; import { Edit } from '@material-ui/icons'; import useToast from '../../../hooks/useToast'; import useQueryParams from '../../../hooks/useQueryParams'; import { useEffect } from 'react'; import useTabs from '../../../hooks/useTabs'; import TabPanel from '../../common/TabNav/TabPanel'; import ProjectAccess from '../access-container'; import EditProject from '../edit-project-container'; import ProjectEnvironment from '../ProjectEnvironment/ProjectEnvironment'; import ProjectOverview from './ProjectOverview'; import ProjectHealth from './ProjectHealth/ProjectHealth'; const Project = () => { const { id, activeTab } = useParams<{ id: string, activeTab: string }>(); const params = useQueryParams(); const { project, error, loading, refetch } = useProject(id); const ref = useLoading(loading); const { toast, setToastData } = useToast(); const commonStyles = useCommonStyles(); const styles = useStyles(); const history = useHistory(); const { a11yProps, activeTabIdx, setActiveTab } = useTabs(0); const basePath = `/projects/${id}`; const tabData = [ { title: 'Overview', component: , path: basePath, name: 'overview', }, { title: 'Health', component: , path: `${basePath}/health`, name: 'health', }, { title: 'Access', component: , path: `${basePath}/access`, name: 'access', }, { title: 'Environments', component: , path: `${basePath}/environments`, name: 'environments', }, { title: 'Settings', // @ts-ignore (fix later) component: , path: `${basePath}/settings`, name: 'settings', }, ] useEffect(() => { const created = params.get('created'); const edited = params.get('edited'); if (created || edited) { const text = created ? 'Project created' : 'Project updated'; setToastData({ show: true, type: 'success', text, }); } tabData.filter(tab => !tab.disabled); /* eslint-disable-next-line */ }, []); useEffect(() => { const tabIdx = tabData.findIndex(tab => tab.name === activeTab); if(tabIdx > 0) { setActiveTab(tabIdx); } else { setActiveTab(0); } /* eslint-disable-next-line */ }, []); const goToTabWithName = (name: string) => { const index = tabData.findIndex(t => t.name === name); if(index >= 0) { const tab = tabData[index]; history.push(tab.path); setActiveTab(index); } } const renderTabs = () => { return tabData.map((tab, index) => { return ( { setActiveTab(index); history.push(tab.path); }} className={styles.tabButton} /> ); }); }; const renderTabContent = () => { return tabData.map((tab, index) => { return ( {tab.component} ); }); }; return (

Project: {project?.name}{' '} goToTabWithName('settings')}>

{project?.description}

} />
{ setActiveTab(tabId); }} indicatorColor="primary" textColor="primary" > {renderTabs()}
{renderTabContent()} {toast}
); }; export default Project;