import { useNavigate } from 'react-router'; import useProject from 'hooks/api/getters/useProject/useProject'; import useLoading from 'hooks/useLoading'; import ApiError from 'component/common/ApiError/ApiError'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { useStyles } from './Project.styles'; import { styled, Tab, Tabs } from '@mui/material'; import { Delete, Edit } from '@mui/icons-material'; import useToast from 'hooks/useToast'; import useQueryParams from 'hooks/useQueryParams'; import { useEffect, useMemo, useState } from 'react'; import { ProjectAccess } from '../ProjectAccess/ProjectAccess'; import ProjectEnvironment from '../ProjectEnvironment/ProjectEnvironment'; import { ProjectFeaturesArchive } from './ProjectFeaturesArchive/ProjectFeaturesArchive'; import ProjectOverview from './ProjectOverview'; import ProjectHealth from './ProjectHealth/ProjectHealth'; import PermissionIconButton from 'component/common/PermissionIconButton/PermissionIconButton'; import { DELETE_PROJECT, UPDATE_PROJECT, } from 'component/providers/AccessProvider/permissions'; import { useRequiredPathParam } from 'hooks/useRequiredPathParam'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import { Routes, Route, useLocation } from 'react-router-dom'; import { DeleteProjectDialogue } from './DeleteProject/DeleteProjectDialogue'; import { ProjectLog } from './ProjectLog/ProjectLog'; import { ChangeRequestOverview } from 'component/changeRequest/ChangeRequestOverview/ChangeRequestOverview'; import { DraftBanner } from 'component/changeRequest/DraftBanner/DraftBanner'; import { MainLayout } from 'component/layout/MainLayout/MainLayout'; import { ProjectChangeRequests } from '../../changeRequest/ProjectChangeRequests/ProjectChangeRequests'; import { useChangeRequestsEnabled } from 'hooks/useChangeRequestsEnabled'; const StyledDiv = styled('div')(() => ({ display: 'flex', })); const StyledName = styled('div')(({ theme }) => ({ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', paddingBottom: theme.spacing(2), })); const StyledTitle = styled('span')(({ theme }) => ({ fontSize: theme.fontSizes.smallBody, fontWeight: 'normal', })); const StyledText = styled(StyledTitle)(({ theme }) => ({ color: theme.palette.grey[800], })); const Project = () => { const projectId = useRequiredPathParam('projectId'); const params = useQueryParams(); const { project, error, loading, refetch } = useProject(projectId); const ref = useLoading(loading); const { setToastData } = useToast(); const { classes: styles } = useStyles(); const navigate = useNavigate(); const { pathname } = useLocation(); const { isOss } = useUiConfig(); const basePath = `/projects/${projectId}`; const projectName = project?.name || projectId; const [showDelDialog, setShowDelDialog] = useState(false); const changeRequestsEnabled = useChangeRequestsEnabled(); const tabs = useMemo(() => { const tabArray = [ { title: 'Overview', path: basePath, name: 'overview', }, { title: 'Health', path: `${basePath}/health`, name: 'health', }, { title: 'Access', path: `${basePath}/access`, name: 'access', }, { title: 'Environments', path: `${basePath}/environments`, name: 'environments', }, { title: 'Archive', path: `${basePath}/archive`, name: 'archive', }, { title: 'Event log', path: `${basePath}/logs`, name: 'logs', }, ]; const changeRequestTab = { title: 'Change requests', path: `${basePath}/change-requests`, name: 'change-request' + '', }; if (changeRequestsEnabled) { tabArray.splice(tabArray.length - 2, 0, changeRequestTab); } return tabArray; }, [changeRequestsEnabled]); const activeTab = [...tabs] .reverse() .find(tab => pathname.startsWith(tab.path)); useEffect(() => { const created = params.get('created'); const edited = params.get('edited'); if (created || edited) { const text = created ? 'Project created' : 'Project updated'; setToastData({ type: 'success', title: text, }); } /* eslint-disable-next-line */ }, []); return ( ) : null } >

{projectName} Description:  {project.description} } /> projectId:  {projectId}
navigate(`/projects/${projectId}/edit`) } tooltipProps={{ title: 'Edit project' }} data-loading > { setShowDelDialog(true); }} tooltipProps={{ title: 'Delete project' }} data-loading >

} />
{tabs.map(tab => ( navigate(tab.path)} className={styles.tabButton} /> ))}
{ setShowDelDialog(false); }} onSuccess={() => { navigate('/projects'); }} /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ); }; export default Project;