Skip to content

Commit 853d207

Browse files
authored
Merge pull request #2629 from objectcomputing/feature-2620/approval-stats-by-supervisor
Feature 2620/approval stats by supervisor
2 parents 64736d8 + 2ad42b0 commit 853d207

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

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

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -90,32 +90,37 @@ const ReviewPeriodCard = ({ mode, onSelect, periodId, selfReviews }) => {
9090
if (res.error) return;
9191

9292
const assignments = res.payload.data;
93+
for (const assignment of assignments) {
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;
98+
}
99+
}
100+
93101
const approvedCount = assignments.filter(a => a.approved).length;
94102
setOverallApprovalPercentage((100 * approvedCount) / assignments.length);
95103

96-
// Get a list of all the reviewers in this period.
97-
const reviewerIds = new Set();
98-
for (const assignment of assignments) {
99-
reviewerIds.add(assignment.reviewerId);
100-
}
101-
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 =>
102107
currentMembers.find(m => m.id === id)
103108
);
104-
reviewers.sort((a, b) => a.name.localeCompare(b.name));
109+
supervisors.sort((a, b) => a.name.localeCompare(b.name));
105110

106-
// Build an array containing statistics for each reviewer.
107-
const stats = reviewers.map(reviewer => {
108-
const { id } = reviewer;
109-
const assignmentsForReviewer = assignments.filter(
110-
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
111116
);
112-
const approved = assignmentsForReviewer.filter(
117+
const approved = assignmentsForSupervisor.filter(
113118
assignment => assignment.approved
114119
).length;
115120
return {
116-
name: reviewer.name,
121+
name: supervisor.name,
117122
percent:
118-
((100 * approved) / assignmentsForReviewer.length).toFixed(0) + '%'
123+
((100 * approved) / assignmentsForSupervisor.length).toFixed(0) + '%'
119124
};
120125
});
121126

0 commit comments

Comments
 (0)