Skip to content

Commit 78fb03d

Browse files
committed
QA fixes for phase displays
1 parent f28f45b commit 78fb03d

File tree

15 files changed

+562
-102
lines changed

15 files changed

+562
-102
lines changed

src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentApproval.tsx

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import { TableIterativeReview } from '../TableIterativeReview'
1212
import { useRole, useRoleProps } from '../../hooks'
1313
import {
1414
REVIEWER,
15-
SUBMITTER,
1615
} from '../../../config/index.config'
1716
import { ChallengeDetailContext } from '../../contexts'
1817
import { hasSubmitterPassedThreshold } from '../../utils/reviewScoring'
@@ -45,17 +44,13 @@ export const TabContentApproval: FC<Props> = (props: Props) => {
4544
[myResources],
4645
)
4746

48-
const isSubmitterOnly = actionChallengeRole === SUBMITTER
49-
&& approverResourceIds.size === 0
50-
const rawRows = isSubmitterOnly ? props.submitterReviews : props.reviews
51-
5247
const hasPassedApprovalThreshold = useMemo(
5348
() => hasSubmitterPassedThreshold(
54-
rawRows ?? [],
49+
props.submitterReviews ?? [],
5550
myMemberIds,
5651
props.approvalMinimumPassingScore,
5752
),
58-
[rawRows, myMemberIds, props.approvalMinimumPassingScore],
53+
[props.submitterReviews, myMemberIds, props.approvalMinimumPassingScore],
5954
)
6055

6156
const isChallengeCompleted = useMemo(
@@ -79,20 +74,20 @@ export const TabContentApproval: FC<Props> = (props: Props) => {
7974
)
8075
const approvalRows: SubmissionInfo[] = useMemo(
8176
() => {
82-
if (!rawRows.length) {
77+
if (!props.reviews.length) {
8378
return []
8479
}
8580

8681
if (approvalPhaseIds.size === 0) {
87-
return rawRows
82+
return props.reviews
8883
}
8984

90-
return rawRows.filter(row => {
85+
return props.reviews.filter(row => {
9186
const phaseId = row.review?.phaseId
9287
return phaseId ? approvalPhaseIds.has(phaseId) : false
9388
})
9489
},
95-
[rawRows, approvalPhaseIds],
90+
[props.reviews, approvalPhaseIds],
9691
)
9792

9893
const filteredApprovalRows = useMemo<SubmissionInfo[]>(
@@ -139,6 +134,8 @@ export const TabContentApproval: FC<Props> = (props: Props) => {
139134
downloadSubmission={props.downloadSubmission}
140135
hideHandleColumn={hideHandleColumn}
141136
columnLabel='Approval'
137+
isChallengeCompleted={isChallengeCompleted}
138+
hasPassedThreshold={hasPassedApprovalThreshold}
142139
/>
143140
)
144141
}

src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentIterativeReview.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,8 @@ export const TabContentIterativeReview: FC<Props> = (props: Props) => {
201201
hideHandleColumn={hideHandleColumn}
202202
columnLabel={props.columnLabel}
203203
hideSubmissionColumn={shouldHideSubmissionColumn}
204+
isChallengeCompleted={isChallengeCompleted}
205+
hasPassedThreshold={hasPassedPostMortemThreshold}
204206
/>
205207
)
206208
}

src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentPostMortem.tsx

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,64 @@
11
/**
22
* Content of post-mortem tab.
33
*/
4-
import { FC } from 'react'
4+
import { FC, useContext, useMemo } from 'react'
55

66
import { TableLoading } from '~/apps/admin/src/lib'
77
import { IsRemovingType } from '~/apps/admin/src/lib/models'
88

9-
import { SubmissionInfo } from '../../models'
9+
import { ChallengeDetailContext } from '../../contexts'
10+
import { ChallengeDetailContextModel, SubmissionInfo } from '../../models'
1011
import { TableNoRecord } from '../TableNoRecord'
1112
import { TableIterativeReview } from '../TableIterativeReview'
1213
import { useRole, useRoleProps } from '../../hooks'
1314
import {
1415
REVIEWER,
1516
SUBMITTER,
1617
} from '../../../config/index.config'
18+
import { hasSubmitterPassedThreshold } from '../../utils/reviewScoring'
1719

1820
interface Props {
1921
reviews: SubmissionInfo[]
2022
submitterReviews: SubmissionInfo[]
23+
postMortemMinimumPassingScore?: number | null
2124
isLoadingReview: boolean
2225
isDownloading: IsRemovingType
2326
downloadSubmission: (submissionId: string) => void
2427
isActiveChallenge: boolean
2528
}
2629

2730
export const TabContentPostMortem: FC<Props> = (props: Props) => {
31+
const {
32+
challengeInfo,
33+
myResources = [],
34+
}: ChallengeDetailContextModel = useContext(ChallengeDetailContext)
2835
const { actionChallengeRole }: useRoleProps = useRole()
2936
const hideHandleColumn = props.isActiveChallenge
3037
&& actionChallengeRole === REVIEWER
3138

3239
const isSubmitterView = actionChallengeRole === SUBMITTER
3340
const sourceRows = isSubmitterView ? props.submitterReviews : props.reviews
41+
const myMemberIds = useMemo<Set<string>>(
42+
() => new Set((myResources ?? []).map(resource => resource.memberId)),
43+
[myResources],
44+
)
45+
const isChallengeCompleted = useMemo(
46+
() => {
47+
const normalizedStatus = (challengeInfo?.status ?? '').toUpperCase()
48+
return normalizedStatus === 'COMPLETED'
49+
|| normalizedStatus === 'CANCELLED'
50+
|| normalizedStatus.startsWith('CANCELLED_')
51+
},
52+
[challengeInfo?.status],
53+
)
54+
const hasPassedPostMortemThreshold = useMemo(
55+
() => hasSubmitterPassedThreshold(
56+
sourceRows ?? [],
57+
myMemberIds,
58+
props.postMortemMinimumPassingScore,
59+
),
60+
[sourceRows, myMemberIds, props.postMortemMinimumPassingScore],
61+
)
3462

3563
if (props.isLoadingReview) {
3664
return <TableLoading />
@@ -48,6 +76,8 @@ export const TabContentPostMortem: FC<Props> = (props: Props) => {
4876
hideHandleColumn={hideHandleColumn}
4977
columnLabel='Post-Mortem'
5078
hideSubmissionColumn
79+
isChallengeCompleted={isChallengeCompleted}
80+
hasPassedThreshold={hasPassedPostMortemThreshold}
5181
/>
5282
)
5383
}

src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentScreening.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ export const TabContentScreening: FC<Props> = (props: Props) => {
3333
const {
3434
actionChallengeRole,
3535
isPrivilegedRole,
36+
hasReviewerRole,
3637
screenerResourceIds,
38+
reviewerResourceIds,
3739
}: useRoleProps = useRole()
3840
const showScreeningColumns: boolean = props.showScreeningColumns ?? true
3941
const hideHandleColumn = props.isActiveChallenge
@@ -69,14 +71,20 @@ export const TabContentScreening: FC<Props> = (props: Props) => {
6971
const filteredScreening = useMemo<Screening[]>(
7072
() => {
7173
const baseRows = props.screening ?? []
74+
const canSeeAll = isPrivilegedRole || hasReviewerRole
7275

73-
if (isPrivilegedRole || (isChallengeCompleted && hasPassedScreeningThreshold)) {
76+
if (isChallengeCompleted && !canSeeAll && !hasPassedScreeningThreshold) {
77+
return []
78+
}
79+
80+
if (canSeeAll || (isChallengeCompleted && hasPassedScreeningThreshold)) {
7481
return baseRows
7582
}
7683

7784
return baseRows.filter(row => {
7885
if (row.myReviewResourceId
79-
&& screenerResourceIds.has(row.myReviewResourceId)) {
86+
&& (screenerResourceIds.has(row.myReviewResourceId)
87+
|| reviewerResourceIds.has(row.myReviewResourceId))) {
8088
return true
8189
}
8290

@@ -90,9 +98,11 @@ export const TabContentScreening: FC<Props> = (props: Props) => {
9098
[
9199
props.screening,
92100
isPrivilegedRole,
101+
hasReviewerRole,
93102
isChallengeCompleted,
94103
hasPassedScreeningThreshold,
95104
screenerResourceIds,
105+
reviewerResourceIds,
96106
myMemberIds,
97107
],
98108
)

src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentSubmissions.module.scss

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,27 @@
102102
height: 18px;
103103
}
104104
}
105+
106+
.historyButton {
107+
background: none;
108+
border: none;
109+
padding: 0;
110+
margin: 0;
111+
color: $link-blue-dark;
112+
cursor: pointer;
113+
font-weight: 600;
114+
115+
&:hover {
116+
color: $blue-110;
117+
}
118+
119+
&:focus {
120+
outline: none;
121+
color: $blue-110;
122+
}
123+
124+
&:disabled {
125+
opacity: 0.7;
126+
pointer-events: none;
127+
}
128+
}

0 commit comments

Comments
 (0)