Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ export const TableMobile: <T extends { [propertyName: string]: any }>(
{...itemItemColumns}
data={itemData}
index={indexData}
allRows={props.data}
Comment thread
hentrymartin marked this conversation as resolved.
key={getKey([
indexData,
indexColumns,
Expand Down
148 changes: 74 additions & 74 deletions src/apps/review/src/lib/components/TableAppeals/TableAppeals.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,10 @@ import {
import type {
DownloadButtonConfig,
ScoreVisibilityConfig,
SubmissionReviewerRow,
SubmissionRow,
} from '../common/types'
import { buildSubmissionReviewerRows } from '../common/types'
Comment thread
hentrymartin marked this conversation as resolved.
Outdated
import type { AggregatedSubmissionReviews } from '../../utils/aggregateSubmissionReviews'
import { CollapsibleAiReviewsRow } from '../CollapsibleAiReviewsRow'

Expand Down Expand Up @@ -209,15 +211,9 @@ export const TableAppeals: FC<TableAppealsProps> = (props: TableAppealsProps) =>
restrictToLatest,
])

const maxReviewCount = useMemo<number>(
() => aggregatedResults.reduce(
(maxCount, result) => {
const reviewCount = result.reviews?.length ?? 0
return reviewCount > maxCount ? reviewCount : maxCount
},
0,
),
[aggregatedResults],
const reviewerRows = useMemo<SubmissionReviewerRow[]>(
() => buildSubmissionReviewerRows(aggregatedRows),
[aggregatedRows],
)

const { canViewAllSubmissions }: UseRolePermissionsResult = useRolePermissions()
Expand Down Expand Up @@ -302,112 +298,117 @@ export const TableAppeals: FC<TableAppealsProps> = (props: TableAppealsProps) =>
],
)

const columns = useMemo<TableColumn<SubmissionRow>[]>(() => {
const submissionIdColumn: TableColumn<SubmissionRow> = {
className: styles.submissionColumn,
const columns = useMemo<TableColumn<SubmissionReviewerRow>[]>(() => {
const submissionIdColumn: TableColumn<SubmissionReviewerRow> = {
className: classNames(styles.submissionColumn, 'no-row-border'),
columnId: 'submission-id',
label: 'Submission ID',
propertyName: 'id',
renderer: (submission: SubmissionRow) => renderSubmissionIdCell(
submission,
downloadButtonConfig,
renderer: (row: SubmissionReviewerRow) => (
row.isFirstReviewerRow
Comment thread
hentrymartin marked this conversation as resolved.
? renderSubmissionIdCell(row, downloadButtonConfig)
: <span />
),
type: 'element',
}

const baseColumns: TableColumn<SubmissionRow>[] = [submissionIdColumn]
const baseColumns: TableColumn<SubmissionReviewerRow>[] = [submissionIdColumn]

if (!hideHandleColumn) {
baseColumns.push({
className: 'no-row-border',
columnId: 'handle-aggregated',
label: 'Submitter',
propertyName: 'handle',
renderer: renderSubmitterHandleCell,
renderer: (row: SubmissionReviewerRow) => (
row.isFirstReviewerRow
? renderSubmitterHandleCell(row)
: <span />
),
type: 'element',
})
}

baseColumns.push({
columnId: 'review-date',
label: 'Review Date',
renderer: renderReviewDateCell,
type: 'element',
})

if (shouldShowAggregatedReviewScore) {
baseColumns.push({
className: 'no-row-border',
columnId: 'review-score',
label: 'Review Score',
renderer: (submission: SubmissionRow) => renderReviewScoreCell(
submission,
scoreVisibilityConfig,
renderer: (row: SubmissionReviewerRow) => (
row.isFirstReviewerRow
? renderReviewScoreCell(row, scoreVisibilityConfig)
: <span />
),
type: 'element',
})
}

for (let index = 0; index < maxReviewCount; index += 1) {
const reviewerLabel = maxReviewCount === 1
? 'Reviewer'
: `Reviewer ${index + 1}`
const scoreLabel = maxReviewCount === 1
? 'Score'
: `Score ${index + 1}`
const appealsLabel = maxReviewCount === 1
? 'Appeals'
: `Appeals ${index + 1}`

baseColumns.push({
columnId: `reviewer-${index}`,
label: reviewerLabel,
renderer: (submission: SubmissionRow) => renderReviewerCell(
submission,
index,
baseColumns.push(
{
columnId: 'reviewer',
label: 'Reviewer',
renderer: (row: SubmissionReviewerRow) => renderReviewerCell(
row,
row.reviewerIndex,
),
type: 'element',
})
},
{
columnId: 'review-date',
label: 'Review Date',
renderer: (row: SubmissionReviewerRow) => renderReviewDateCell(row),
type: 'element',
},
{
columnId: 'score',
label: 'Score',
renderer: (row: SubmissionReviewerRow) => renderScoreCell(
row,
row.reviewerIndex,
scoreVisibilityConfig,
),
type: 'element',
},
)

if (allowsAppeals) {
baseColumns.push({
columnId: `score-${index}`,
label: scoreLabel,
renderer: (submission: SubmissionRow) => renderScoreCell(
submission,
index,
className: styles.tableCellNoWrap,
columnId: 'appeals',
label: 'Appeals',
renderer: (row: SubmissionReviewerRow) => renderAppealsCell(
row,
row.reviewerIndex,
scoreVisibilityConfig,
),
type: 'element',
})

if (allowsAppeals) {
baseColumns.push({
className: styles.tableCellNoWrap,
columnId: `appeals-${index}`,
label: appealsLabel,
renderer: (submission: SubmissionRow) => renderAppealsCell(
submission,
index,
scoreVisibilityConfig,
),
type: 'element',
})
}
}

if (props.aiReviewers) {
baseColumns.push({
columnId: 'ai-reviews-table',
isExpand: true,
label: '',
renderer: (submission: SubmissionRow, allRows: SubmissionRow[]) => (
props.aiReviewers && (
renderer: (row: SubmissionReviewerRow, allRows: SubmissionReviewerRow[]) => {
if (!row.isLastReviewerRow || !props.aiReviewers) {
Comment thread
hentrymartin marked this conversation as resolved.
return <span />
}

const firstIndexForSubmission = allRows.findIndex(candidate => (
candidate.id === row.id && candidate.isFirstReviewerRow
))
const defaultOpen = firstIndexForSubmission === 0

return (
<CollapsibleAiReviewsRow
className={styles.aiReviews}
aiReviewers={props.aiReviewers}
submission={submission as any}
defaultOpen={allRows ? !allRows.indexOf(submission) : false}
submission={row as any}
defaultOpen={defaultOpen}
/>
)
),
},
type: 'element',
})
}
Expand All @@ -417,12 +418,11 @@ export const TableAppeals: FC<TableAppealsProps> = (props: TableAppealsProps) =>
allowsAppeals,
downloadButtonConfig,
hideHandleColumn,
maxReviewCount,
scoreVisibilityConfig,
shouldShowAggregatedReviewScore,
])

const columnsMobile = useMemo<MobileTableColumn<SubmissionRow>[][]>(
const columnsMobile = useMemo<MobileTableColumn<SubmissionReviewerRow>[][]>(
() => columns.map(column => ([
column.label && {
columnId: `${column.columnId}-label`,
Expand All @@ -444,7 +444,7 @@ export const TableAppeals: FC<TableAppealsProps> = (props: TableAppealsProps) =>
label: '',
mobileType: 'last-value',
},
]).filter(Boolean) as MobileTableColumn<SubmissionRow>[]),
]).filter(Boolean) as MobileTableColumn<SubmissionReviewerRow>[]),
[columns],
)

Expand All @@ -459,11 +459,11 @@ export const TableAppeals: FC<TableAppealsProps> = (props: TableAppealsProps) =>
)}
>
{isTablet ? (
<TableMobile columns={columnsMobile} data={aggregatedRows} />
<TableMobile columns={columnsMobile} data={reviewerRows} />
) : (
<Table
columns={columns}
data={aggregatedRows}
data={reviewerRows}
showExpand
expandMode='always'
disableSorting
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
white-space: nowrap;
}


.respondButton {
display: inline-flex;
align-items: center;
Expand Down
Loading
Loading