Skip to content

Commit c52d950

Browse files
committed
Track all stats based on reviewee supervisor instead of reviewer.
1 parent 19ebecc commit c52d950

File tree

1 file changed

+17
-25
lines changed

1 file changed

+17
-25
lines changed

web-ui/src/components/reviews/periods/ReviewPeriodCard.jsx

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ import {
2626
selectCurrentMembers,
2727
selectHasUpdateReviewAssignmentsPermission,
2828
selectReviewPeriod,
29-
selectReviewPeriods,
30-
selectSupervisors,
29+
selectReviewPeriods
3130
} from '../../../context/selectors';
3231
import { titleCase } from '../../../helpers/strings.js';
3332

@@ -91,44 +90,37 @@ const ReviewPeriodCard = ({ mode, onSelect, periodId, selfReviews }) => {
9190
if (res.error) return;
9291

9392
const assignments = res.payload.data;
94-
95-
const supervisors = selectSupervisors(state);
9693
for (const assignment of assignments) {
97-
// If the reviewer is not a supervisor, locally modify the assignment
98-
// so that this will count as one to be approved by the reviewer's
99-
// supervisor.
100-
const id = assignment.reviewerId;
101-
if (!supervisors.some(s => s.id === id)) {
102-
const member = currentMembers.find(m => m.id === id);
103-
if (member) {
104-
assignment.reviewerId = member.supervisorid;
105-
}
94+
// Use the reviewee supervisor to track who needs to approve reviewers.
95+
const member = currentMembers.find(m => m.id === assignment.revieweeId);
96+
if (member?.supervisorid) {
97+
assignment.revieweeSupervisorId = member.supervisorid;
10698
}
10799
}
108100

109101
const approvedCount = assignments.filter(a => a.approved).length;
110102
setOverallApprovalPercentage((100 * approvedCount) / assignments.length);
111103

112-
// Get a list of all the reviewers in this period.
113-
const reviewerIds = new Set(assignments.map(a => a.reviewerId));
114-
const reviewers = [...reviewerIds].map(id =>
104+
// Get a list of all the supervisors in this period.
105+
const supervisorIds = new Set(assignments.map(a => a.revieweeSupervisorId));
106+
const supervisors = [...supervisorIds].filter(id => !!id).map(id =>
115107
currentMembers.find(m => m.id === id)
116108
);
117-
reviewers.sort((a, b) => a.name.localeCompare(b.name));
109+
supervisors.sort((a, b) => a.name.localeCompare(b.name));
118110

119-
// Build an array containing statistics for each reviewer.
120-
const stats = reviewers.map(reviewer => {
121-
const { id } = reviewer;
122-
const assignmentsForReviewer = assignments.filter(
123-
assignment => assignment.reviewerId === id
111+
// Build an array containing statistics for each supervisor.
112+
const stats = supervisors.map(supervisor => {
113+
const { id } = supervisor;
114+
const assignmentsForSupervisor = assignments.filter(
115+
assignment => assignment.revieweeSupervisorId === id
124116
);
125-
const approved = assignmentsForReviewer.filter(
117+
const approved = assignmentsForSupervisor.filter(
126118
assignment => assignment.approved
127119
).length;
128120
return {
129-
name: reviewer.name,
121+
name: supervisor.name,
130122
percent:
131-
((100 * approved) / assignmentsForReviewer.length).toFixed(0) + '%'
123+
((100 * approved) / assignmentsForSupervisor.length).toFixed(0) + '%'
132124
};
133125
});
134126

0 commit comments

Comments
 (0)