Skip to content

Commit dca75d2

Browse files
authored
Merge branch 'develop' into bugfix-2672/address-test-warnings
2 parents 19b3e60 + 038c6d5 commit dca75d2

File tree

2 files changed

+62
-51
lines changed

2 files changed

+62
-51
lines changed

web-ui/src/pages/FeedbackSubmitPage.jsx

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { useHistory, useLocation } from 'react-router-dom';
77
import {
88
selectCsrfToken,
99
selectCurrentUser,
10+
selectIsSubordinateOfCurrentUser,
1011
selectProfile
1112
} from '../context/selectors';
1213
import { AppContext } from '../context/AppContext';
@@ -52,11 +53,6 @@ const FeedbackSubmitPage = () => {
5253
const [requestCanceled, setRequestCanceled] = useState(false);
5354
const feedbackRequestFetched = useRef(false);
5455

55-
function isManager(revieweeProfile) {
56-
const supervisorId = revieweeProfile?.supervisorid;
57-
return supervisorId === currentUserId;
58-
}
59-
6056
useEffect(() => {
6157
if (!requestQuery && !selfRequestQuery) {
6258
history.push('/checkins');
@@ -147,12 +143,12 @@ const FeedbackSubmitPage = () => {
147143
feedbackRequest?.recipientId
148144
);
149145

150-
// If this is our review or we are the manager of the reviewer we are
151-
// allowed to view this review.
152-
if (recipientProfile?.id != currentUserId &&
153-
!isManager(recipientProfile)) {
146+
// If we know the current user and it's not the recipient or someone in the person having feedback given's
147+
// management heirarchy, then we should issue an error and send them home...
148+
if (currentUserId && feedbackRequest?.recipientId != currentUserId &&
149+
!selectIsSubordinateOfCurrentUser(feedbackRequest?.requesteeId)) {
154150
// The current user is not the recipients's manager, we need to leave.
155-
history.push('/checkins');
151+
history.push('/');
156152
window.snackDispatch({
157153
type: UPDATE_TOAST,
158154
payload: {
@@ -170,7 +166,7 @@ const FeedbackSubmitPage = () => {
170166
);
171167
setRecipient(recipientProfile);
172168
}
173-
}, [feedbackRequest, selfReviewRequest, state]);
169+
}, [currentUserId, feedbackRequest, selfReviewRequest, state]);
174170

175171
return (
176172
<Root className="feedback-submit-page">

web-ui/src/pages/MeritReportPage.jsx

Lines changed: 55 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import { useQueryParameters } from '../helpers/query-parameters';
1919

2020
import markdown from 'markdown-builder';
2121

22+
const noneAvailable = "None available during the period covered by this review.";
23+
2224
const MeritReportPage = () => {
2325
const { state, dispatch } = useContext(AppContext);
2426

@@ -256,49 +258,58 @@ const MeritReportPage = () => {
256258
let text = markdown.headers.h1("Current Information");
257259
text += years.toFixed(1) + " years\n\n";
258260
text += markdown.headers.h2("Biographical Notes");
259-
text += currentInfo.biography + "\n\n";
261+
text += (currentInfo.biography ? currentInfo.biography :
262+
noneAvailable) + "\n\n";
260263
return text;
261264
};
262265

263266
const markdownKudos = (data) => {
264267
const kudosList = data.kudos;
265268
let text = markdown.headers.h1("Kudos");
266-
for (let kudos of kudosList) {
267-
const date = dateFromArray(kudos.dateCreated);
268-
text += kudos.message + "\n\n";
269-
text += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
270-
markdown.emphasis.i("Submitted on " + formatDate(date) +
271-
", by " + kudos.sender) +
272-
"\n\n\n";
269+
if (kudosList.length > 0) {
270+
for (let kudos of kudosList) {
271+
const date = dateFromArray(kudos.dateCreated);
272+
text += kudos.message + "\n\n";
273+
text += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
274+
markdown.emphasis.i("Submitted on " + formatDate(date) +
275+
", by " + kudos.sender) +
276+
"\n\n\n";
277+
}
278+
} else {
279+
text += noneAvailable + "\n\n";
273280
}
274281
return text;
275282
};
276283

277284
const markdownReviewsImpl = (title, feedbackList, listMembers) => {
278285
let text = markdown.headers.h1(title);
279-
for(let feedback of feedbackList) {
280-
const members = getUniqueMembers(feedback.answers);
281-
for(let member of Object.keys(members)) {
282-
if (listMembers) {
283-
text += member + ": ";
284-
}
285-
text += "Submitted - " + formatDate(members[member]) + "\n\n";
286-
}
287-
text += "\n";
288-
289-
const questions = getUniqueQuestions(feedback.answers);
290-
for(let question of Object.keys(questions)) {
291-
text += markdown.headers.h4(question) + "\n";
292-
for(let answer of questions[question]) {
286+
if (feedbackList.length > 0) {
287+
for(let feedback of feedbackList) {
288+
const members = getUniqueMembers(feedback.answers);
289+
for(let member of Object.keys(members)) {
293290
if (listMembers) {
294-
text += answer[0] + ": ";
291+
text += member + ": ";
295292
}
296-
text += answer[1] + "\n\n";
293+
text += "Submitted - " + formatDate(members[member]) + "\n\n";
297294
}
298295
text += "\n";
296+
297+
const questions = getUniqueQuestions(feedback.answers);
298+
for(let question of Object.keys(questions)) {
299+
text += markdown.headers.h4(question) + "\n";
300+
for(let answer of questions[question]) {
301+
if (listMembers) {
302+
text += answer[0] + ": ";
303+
}
304+
text += answer[1] + "\n\n";
305+
}
306+
text += "\n";
307+
}
299308
}
309+
text += "\n";
310+
} else {
311+
text += noneAvailable + "\n\n";
300312
}
301-
text += "\n";
302313
return text;
303314
}
304315

@@ -347,31 +358,35 @@ const MeritReportPage = () => {
347358
const markdownFeedback = (data) => {
348359
let text = markdown.headers.h1("Feedback");
349360
const feedbackList = data.feedback;
350-
for(let feedback of feedbackList) {
351-
text += markdown.headers.h2("Template: " + feedback.name);
352-
const members = getUniqueMembers(feedback.answers);
353-
for(let member of Object.keys(members)) {
354-
text += member + ": " + formatDate(members[member]) + "\n\n";
355-
}
356-
text += "\n";
357-
358-
const questions = getUniqueQuestions(feedback.answers);
359-
for(let question of Object.keys(questions)) {
360-
text += markdown.headers.h4(question) + "\n";
361-
for(let answer of questions[question]) {
362-
text += answer[0] + ": " + answer[1] + "\n\n";
361+
if (feedbackList.length > 0) {
362+
for(let feedback of feedbackList) {
363+
text += markdown.headers.h2("Template: " + feedback.name);
364+
const members = getUniqueMembers(feedback.answers);
365+
for(let member of Object.keys(members)) {
366+
text += member + ": " + formatDate(members[member]) + "\n\n";
363367
}
364368
text += "\n";
369+
370+
const questions = getUniqueQuestions(feedback.answers);
371+
for(let question of Object.keys(questions)) {
372+
text += markdown.headers.h4(question) + "\n";
373+
for(let answer of questions[question]) {
374+
text += answer[0] + ": " + answer[1] + "\n\n";
375+
}
376+
text += "\n";
377+
}
365378
}
379+
text += "\n";
380+
} else {
381+
text += noneAvailable + "\n\n";
366382
}
367-
text += "\n";
368383
return text;
369384
};
370385

371386
const markdownTitleHistory = (data) => {
372387
// Get the position history sorted latest to earliest
373388
const posHistory = data.positionHistory.sort((a, b) => {
374-
for(let i = 0; i < a.length; i++) {
389+
for(let i = 0; i < a.date.length; i++) {
375390
if (a.date[i] != b.date[i]) {
376391
return b.date[i] - a.date[i];
377392
}

0 commit comments

Comments
 (0)