From 779f7aae278c940f534760b11ddcb483cac52ffe Mon Sep 17 00:00:00 2001
From: Fredrik Jonsson <frjo@xdeb.org>
Date: Fri, 8 Sep 2023 14:10:05 +0200
Subject: [PATCH] Add colour to review outcome displays and do not show "Avg.
 Score" if it is zero (0) (#3548)

Replaces PR: #3380
---
 .../funds/includes/review_sidebar.html         |  8 +++++---
 .../funds/includes/review_sidebar_item.html    |  8 +++++---
 hypha/apply/review/models.py                   |  2 +-
 hypha/apply/review/templatetags/review_tags.py | 10 +++++-----
 .../src/sass/apply/components/_form.scss       |  2 +-
 .../src/sass/apply/components/_grid.scss       |  8 ++++----
 .../apply/components/_reviews-sidebar.scss     | 14 +++++++++++++-
 .../src/sass/public/components/_form.scss      |  2 +-
 .../src/sass/public/components/_grid.scss      | 18 +++++++++---------
 9 files changed, 44 insertions(+), 28 deletions(-)

diff --git a/hypha/apply/funds/templates/funds/includes/review_sidebar.html b/hypha/apply/funds/templates/funds/includes/review_sidebar.html
index fc81143b3..75cb0d3a2 100644
--- a/hypha/apply/funds/templates/funds/includes/review_sidebar.html
+++ b/hypha/apply/funds/templates/funds/includes/review_sidebar.html
@@ -4,9 +4,11 @@
     <span>
         {{ recommendation|traffic_light }}
     </span>
-    <span class="font-medium">
-        {% trans 'Avg. Score'%}: {{assigned_reviewers|average_review_score|floatformat:'1'}}
-    </span>
+    {% with assigned_reviewers|average_review_score as average %}
+        <span class="font-medium">
+            {{ assigned_reviewers|average_review_score }}
+        </span>
+    {% endwith %}
 </div>
 
 <ul class="reviews-sidebar mt-4" x-data='{showHiddenReviewers: false}'>
diff --git a/hypha/apply/funds/templates/funds/includes/review_sidebar_item.html b/hypha/apply/funds/templates/funds/includes/review_sidebar_item.html
index 984bba729..9aaf01814 100644
--- a/hypha/apply/funds/templates/funds/includes/review_sidebar_item.html
+++ b/hypha/apply/funds/templates/funds/includes/review_sidebar_item.html
@@ -28,8 +28,10 @@
                 {% if reviewer.role %}{% image reviewer.role.icon max-12x12 %}{% endif %}
             </div>
         {% endif %}
-        <div>{{ reviewer.review.get_recommendation_display }}</div>
-        <div>{{ reviewer.review.get_score_display }}</div>
+        {% with reviewer.review.get_recommendation_display as recommendation and reviewer.review.get_score_display as score %}
+            <div class="{{ recommendation|slugify }}">{{ recommendation }}</div>
+            <div class="{{ recommendation|slugify }}">{{ score }}</div>
+        {% endwith %}
     {% endif %}
 </li>
 
@@ -45,7 +47,7 @@
             {% endwith %}
         </div>
         <div></div>
-        <div class="reviews-sidebar__outcome {{ opinion.get_opinion_display|lower }}">{{ opinion.get_opinion_display}}</div>
+        <div class="reviews-sidebar__outcome {{ opinion.get_opinion_display|slugify }}">{{ opinion.get_opinion_display}}</div>
     </li>
     {% if forloop.last %}
         </ul>
diff --git a/hypha/apply/review/models.py b/hypha/apply/review/models.py
index a78f2b149..19dc4ff3a 100644
--- a/hypha/apply/review/models.py
+++ b/hypha/apply/review/models.py
@@ -200,7 +200,7 @@ class Review(ReviewFormFieldsMixin, BaseStreamForm, AccessFormData, models.Model
 
     @property
     def get_score_display(self):
-        return "{:.1f}".format(self.score) if self.score != NA else "NA"
+        return "{:.1f}".format(self.score) if self.score != NA else "-"
 
     def get_absolute_url(self):
         return reverse(
diff --git a/hypha/apply/review/templatetags/review_tags.py b/hypha/apply/review/templatetags/review_tags.py
index 8feac2f3d..9c8a4cc7d 100644
--- a/hypha/apply/review/templatetags/review_tags.py
+++ b/hypha/apply/review/templatetags/review_tags.py
@@ -1,5 +1,6 @@
 from django import template
 from django.utils.safestring import mark_safe
+from django.utils.translation import gettext_lazy as _
 
 from ..models import MAYBE, NO, YES
 from ..options import NA
@@ -54,8 +55,7 @@ def average_review_score(reviewers):
             and not reviewer.review.score == NA
         ]
         if len(scores) > 0:
-            return sum(scores) / len(scores)
-        else:
-            return 0
-    else:
-        return reviewers
+            return _("Avg. score: {average}").format(
+                average=round(sum(scores) / len(scores), 1)
+            )
+    return ""
diff --git a/hypha/static_src/src/sass/apply/components/_form.scss b/hypha/static_src/src/sass/apply/components/_form.scss
index 8983aecba..e38d4ee12 100644
--- a/hypha/static_src/src/sass/apply/components/_form.scss
+++ b/hypha/static_src/src/sass/apply/components/_form.scss
@@ -234,7 +234,7 @@
                     @supports (display: grid) {
                         display: grid;
                         grid-template-columns: 1fr 1fr;
-                        grid-gap: 5px;
+                        gap: 5px;
                     }
                 }
 
diff --git a/hypha/static_src/src/sass/apply/components/_grid.scss b/hypha/static_src/src/sass/apply/components/_grid.scss
index 0585a714d..5e9adc94e 100644
--- a/hypha/static_src/src/sass/apply/components/_grid.scss
+++ b/hypha/static_src/src/sass/apply/components/_grid.scss
@@ -28,7 +28,7 @@
     .grid {
         display: grid;
         margin-bottom: 1rem;
-        grid-gap: 10px;
+        gap: 10px;
         grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
 
         > * {
@@ -39,7 +39,7 @@
 
         &--two {
             grid-template-columns: 100%;
-            grid-gap: 0.25rem;
+            gap: 0.25rem;
 
             @include media-query(tablet-portrait) {
                 grid-template-columns: 1fr 1fr;
@@ -51,7 +51,7 @@
 
             .form--comments & {
                 margin: 20px 0 0;
-                grid-gap: 10px;
+                gap: 10px;
                 grid-template-columns: 100px 100px;
             }
 
@@ -70,7 +70,7 @@
 
         &--proposal-info {
             grid-template-columns: 100%;
-            grid-gap: 10px;
+            gap: 10px;
             margin: 0 0 1rem;
 
             @include media-query(mob-landscape) {
diff --git a/hypha/static_src/src/sass/apply/components/_reviews-sidebar.scss b/hypha/static_src/src/sass/apply/components/_reviews-sidebar.scss
index 676de0f3a..7fda99be1 100644
--- a/hypha/static_src/src/sass/apply/components/_reviews-sidebar.scss
+++ b/hypha/static_src/src/sass/apply/components/_reviews-sidebar.scss
@@ -22,7 +22,7 @@
         @supports (display: grid) {
             display: grid;
             grid-template-columns: 45% 25% 15% 15%;
-            grid-gap: 5px;
+            gap: 5px;
         }
 
         &--decision {
@@ -57,6 +57,18 @@
         &.no-response {
             color: $color--black-20;
         }
+
+        .yes {
+            color: $color--green;
+        }
+
+        .maybe {
+            color: $color--mustard;
+        }
+
+        .no {
+            color: $color--tomato;
+        }
     }
 
     &__date {
diff --git a/hypha/static_src/src/sass/public/components/_form.scss b/hypha/static_src/src/sass/public/components/_form.scss
index f0798fe2d..a36bf4793 100644
--- a/hypha/static_src/src/sass/public/components/_form.scss
+++ b/hypha/static_src/src/sass/public/components/_form.scss
@@ -242,7 +242,7 @@
                     @supports (display: grid) {
                         display: grid;
                         grid-template-columns: 1fr 1fr;
-                        grid-gap: 5px;
+                        gap: 5px;
                     }
                 }
 
diff --git a/hypha/static_src/src/sass/public/components/_grid.scss b/hypha/static_src/src/sass/public/components/_grid.scss
index 8cd72df37..7363ff6a2 100644
--- a/hypha/static_src/src/sass/public/components/_grid.scss
+++ b/hypha/static_src/src/sass/public/components/_grid.scss
@@ -60,7 +60,7 @@
     .grid {
         display: grid;
         margin: 30px 0;
-        grid-gap: 10px;
+        gap: 10px;
         grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
 
         > * {
@@ -82,12 +82,12 @@
 
         &--one {
             grid-template-columns: 1fr;
-            grid-gap: 30px;
+            gap: 30px;
         }
 
         &--two {
             grid-template-columns: 100%;
-            grid-gap: 0;
+            gap: 0;
 
             @include media-query(tablet-portrait) {
                 grid-template-columns: 1fr 1fr;
@@ -96,7 +96,7 @@
 
         &--max-three {
             grid-template-columns: 1fr;
-            grid-gap: 30px;
+            gap: 30px;
 
             @include media-query(small-tablet) {
                 grid-template-columns: repeat(2, 1fr);
@@ -108,11 +108,11 @@
         }
 
         &--medium-gap {
-            grid-gap: 35px;
+            gap: 35px;
         }
 
         &--small-gap {
-            grid-gap: 20px;
+            gap: 20px;
         }
 
         &--no-margin {
@@ -124,7 +124,7 @@
             margin: 0 0 30px;
             border-bottom: 1px solid $color--mid-grey;
             grid-template-columns: 100%;
-            grid-gap: 10px;
+            gap: 10px;
 
             @include media-query(mob-landscape) {
                 margin: 0 0 30px;
@@ -138,7 +138,7 @@
 
         &--focus-areas {
             margin: 20px 0;
-            grid-gap: 20px;
+            gap: 20px;
             grid-template-columns: 1fr;
 
             @include media-query(small-tablet) {
@@ -150,7 +150,7 @@
                 margin: 3rem 0;
                 text-align: center;
                 grid-template-columns: repeat(4, 1fr);
-                grid-gap: 35px;
+                gap: 35px;
             }
         }
     }
-- 
GitLab