|
5 | 5 |
|
6 | 6 | import { ReactElement, useState } from 'react'; |
7 | 7 | import { Link as RouterLink } from 'react-router-dom'; |
8 | | -import { |
9 | | - ActivationChangeRequest, |
10 | | - ChangeRequest, |
11 | | - ChangeRequestType, |
12 | | - StageGateChangeRequest, |
13 | | - StandardChangeRequest, |
14 | | - isProject |
15 | | -} from 'shared'; |
| 8 | +import { ActivationChangeRequest, ChangeRequest, ChangeRequestType, StandardChangeRequest, isProject } from 'shared'; |
16 | 9 | import { routes } from '../../utils/routes'; |
17 | 10 | import { datePipe, fullNamePipe, wbsPipe } from '../../utils/pipes'; |
18 | 11 | import ActivationDetails from './ActivationDetails'; |
19 | | -import StageGateDetails from './StageGateDetails'; |
20 | 12 | import ImplementedChangesList from './ImplementedChangesList'; |
21 | 13 | import StandardDetails from './StandardDetails'; |
22 | 14 | import ReviewChangeRequest from './ReviewChangeRequest'; |
23 | 15 | import ReviewNotes from './ReviewNotes'; |
24 | 16 | import ProposedSolutionsList from './ProposedSolutionsList'; |
25 | | -import { Grid, Typography, Link } from '@mui/material'; |
| 17 | +import { Grid, Typography, Link, Box } from '@mui/material'; |
26 | 18 | import DeleteChangeRequest from './DeleteChangeRequest'; |
27 | 19 | import { useSingleProject } from '../../hooks/projects.hooks'; |
28 | 20 | import LoadingIndicator from '../../components/LoadingIndicator'; |
29 | 21 | import ErrorPage from '../ErrorPage'; |
30 | 22 | import PageLayout from '../../components/PageLayout'; |
31 | 23 | import ChangeRequestActionMenu from './ChangeRequestActionMenu'; |
32 | 24 | import OtherChangeRequestsPopupTabs from './OtherChangeRequestsPopupTabs'; |
| 25 | +import ChangeRequestTypePill from '../../components/ChangeRequestTypePill'; |
| 26 | +import ChangeRequestStatusPill from '../../components/ChangeRequestStatusPill'; |
33 | 27 |
|
34 | 28 | const buildDetails = (cr: ChangeRequest): ReactElement => { |
35 | 29 | switch (cr.type) { |
36 | 30 | case ChangeRequestType.Activation: |
37 | 31 | return <ActivationDetails cr={cr as ActivationChangeRequest} />; |
38 | 32 | case ChangeRequestType.StageGate: |
39 | | - return <StageGateDetails cr={cr as StageGateChangeRequest} />; |
| 33 | + return <></>; |
40 | 34 | default: |
41 | 35 | return <StandardDetails cr={cr as StandardChangeRequest} />; |
42 | 36 | } |
43 | 37 | }; |
44 | | - |
45 | | -const buildProposedSolutions = (cr: ChangeRequest): ReactElement => { |
46 | | - if (cr.type !== ChangeRequestType.Activation && cr.type !== ChangeRequestType.StageGate) { |
47 | | - return ( |
48 | | - <ProposedSolutionsList |
49 | | - proposedSolutions={(cr as StandardChangeRequest).proposedSolutions} |
50 | | - crReviewed={cr.accepted} |
51 | | - crId={cr.crId} |
52 | | - /> |
53 | | - ); |
54 | | - } else { |
55 | | - return <></>; |
56 | | - } |
57 | | -}; |
58 | | - |
59 | 38 | interface ChangeRequestDetailsProps { |
60 | 39 | isUserAllowedToReview: boolean; |
61 | 40 | isUserAllowedToImplement: boolean; |
@@ -90,9 +69,18 @@ const ChangeRequestDetailsView: React.FC<ChangeRequestDetailsProps> = ({ |
90 | 69 |
|
91 | 70 | const { name: projectName } = project; |
92 | 71 |
|
| 72 | + const isStandard = |
| 73 | + changeRequest.type !== ChangeRequestType.Activation && changeRequest.type !== ChangeRequestType.StageGate; |
| 74 | + |
93 | 75 | return ( |
94 | 76 | <PageLayout |
95 | 77 | title={`Change Request #${changeRequest.crId}`} |
| 78 | + chips={ |
| 79 | + <Box display="flex" mx="20px" gap="20px"> |
| 80 | + <ChangeRequestTypePill type={changeRequest.type} /> |
| 81 | + <ChangeRequestStatusPill status={changeRequest.status} /> |
| 82 | + </Box> |
| 83 | + } |
96 | 84 | previousPages={[{ name: 'Change Requests', route: routes.CHANGE_REQUESTS }]} |
97 | 85 | headerRight={ |
98 | 86 | <ChangeRequestActionMenu |
@@ -124,24 +112,30 @@ const ChangeRequestDetailsView: React.FC<ChangeRequestDetailsProps> = ({ |
124 | 112 | </Grid> |
125 | 113 | </Grid> |
126 | 114 | <Grid container rowSpacing={2} columnSpacing={2}> |
127 | | - <Grid item xs={12}> |
| 115 | + <Grid container item xs={isStandard ? 7 : 12}> |
128 | 116 | {buildDetails(changeRequest)} |
| 117 | + <Grid item md={isStandard ? 12 : 5}> |
| 118 | + <ReviewNotes |
| 119 | + reviewer={changeRequest.reviewer} |
| 120 | + reviewNotes={changeRequest.reviewNotes} |
| 121 | + dateReviewed={changeRequest.dateReviewed} |
| 122 | + /> |
| 123 | + </Grid> |
| 124 | + <Grid item md={isStandard ? 12 : 6}> |
| 125 | + <ImplementedChangesList |
| 126 | + changes={changeRequest.implementedChanges || []} |
| 127 | + overallDateImplemented={changeRequest.dateImplemented} |
| 128 | + /> |
| 129 | + </Grid> |
129 | 130 | </Grid> |
130 | | - <Grid item xs={12}> |
131 | | - {buildProposedSolutions(changeRequest)} |
132 | | - </Grid> |
133 | | - <Grid item md={5}> |
134 | | - <ReviewNotes |
135 | | - reviewer={changeRequest.reviewer} |
136 | | - reviewNotes={changeRequest.reviewNotes} |
137 | | - dateReviewed={changeRequest.dateReviewed} |
138 | | - /> |
139 | | - </Grid> |
140 | | - <Grid item md={6}> |
141 | | - <ImplementedChangesList |
142 | | - changes={changeRequest.implementedChanges || []} |
143 | | - overallDateImplemented={changeRequest.dateImplemented} |
144 | | - /> |
| 131 | + <Grid item xs={isStandard ? 5 : 0}> |
| 132 | + {isStandard && ( |
| 133 | + <ProposedSolutionsList |
| 134 | + proposedSolutions={(changeRequest as StandardChangeRequest).proposedSolutions} |
| 135 | + crReviewed={changeRequest.accepted} |
| 136 | + crId={changeRequest.crId} |
| 137 | + /> |
| 138 | + )} |
145 | 139 | </Grid> |
146 | 140 | </Grid> |
147 | 141 | </Grid> |
|
0 commit comments