From a76f5fb478d6b2add941d9a8a6091d24cefef3e8 Mon Sep 17 00:00:00 2001 From: Todd Dembrey <todd.dembrey@torchbox.com> Date: Thu, 7 Mar 2019 09:23:45 +0000 Subject: [PATCH] Update the React FE for the new partner reviews --- opentech/apply/funds/serializers.py | 2 + .../app/src/containers/ReviewInformation.js | 51 ++++++++++++++----- 2 files changed, 40 insertions(+), 13 deletions(-) diff --git a/opentech/apply/funds/serializers.py b/opentech/apply/funds/serializers.py index fbb72a705..4f3640364 100644 --- a/opentech/apply/funds/serializers.py +++ b/opentech/apply/funds/serializers.py @@ -99,6 +99,7 @@ class ReviewSummarySerializer(serializers.Serializer): 'order': assigned.role and assigned.role.order, }, 'is_staff': assigned.reviewer.is_apply_staff, + 'is_partner': assigned.reviewer.is_partner, } for assigned in assigned_reviewers ] @@ -114,6 +115,7 @@ class ReviewSummarySerializer(serializers.Serializer): 'order': None, }, 'is_staff': user.is_apply_staff, + 'is_partner': user.is_partner, } for user in User.objects.filter(id__in=extra_reviewers) ]) diff --git a/opentech/static_src/src/app/src/containers/ReviewInformation.js b/opentech/static_src/src/app/src/containers/ReviewInformation.js index 8e6a1f0d6..02ddf9d85 100644 --- a/opentech/static_src/src/app/src/containers/ReviewInformation.js +++ b/opentech/static_src/src/app/src/containers/ReviewInformation.js @@ -19,7 +19,16 @@ const ReviewInformation = ({ submission }) => { const staff = []; const nonStaff = []; - Object.values(data.assigned).map(key => key.isStaff ? staff.push(key) : nonStaff.push(key)) + const partner = []; + Object.values(data.assigned).map(person => { + if (person.isStaff) { + staff.push(person) + } else if(person.is_partner){ + partner.push(person) + } else { + nonStaff.push(person) + } + }) const orderPeople = (people) => { people.sort((a,b) => { @@ -77,22 +86,38 @@ const ReviewInformation = ({ submission }) => { </> } - const [staffReviewed, staffNotReviewed] = orderPeople(staff); - const [nonStaffReviewed, nonStaffNotReviewed] = orderPeople(nonStaff); + + const renderNormal = (people) => { + const [peopleReviewed, peopleNotReviewed] = orderPeople(people); + return <> + {renderReviewBlock(peopleReviewed)} + {renderReviewBlock(peopleNotReviewed)} + </> + } + + const renderCollapsed = (people) => { + const [peopleReviewed, peopleNotReviewed] = orderPeople(people); + return <> + { renderReviewBlock(peopleReviewed) } + { peopleNotReviewed.length !== 0 && + <a onClick={() => setShowExternal(!showExternal)}>{showExternal ? "Hide assigned reviewers": "All assigned reviewers"}</a> + } + { showExternal && + renderReviewBlock(peopleNotReviewed) + } + </> + } return ( <SidebarBlock title="Reviews & assignees"> + { partner.length === 0 && staff.length === 0 && nonStaff.length === 0 && <h5>No reviews available</h5>} <ReviewBlock score={data.score} recommendation={data.recommendation.display}> - {renderReviewBlock(staffReviewed)} - {renderReviewBlock(staffNotReviewed)} - <hr /> - { renderReviewBlock(nonStaffReviewed) } - { nonStaffNotReviewed.length !== 0 && - <a onClick={() => setShowExternal(!showExternal)}>{showExternal ? "Hide assigned reviewers": "All assigned reviewers"}</a> - } - { showExternal && - renderReviewBlock(nonStaffNotReviewed) - } + { renderNormal(staff) } + { staff.length !== 0 && partner.length !== 0 && <hr /> } + { renderNormal(partner) } + { (partner.length !== 0 || staff.length !== 0) && nonStaff.length !== 0 && <hr /> } + { renderCollapsed(nonStaff) } + </ReviewBlock> </SidebarBlock> ) -- GitLab