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 &amp; 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