From 5bd354b69026bf18695bb42bd55c34841fa7ce33 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?=
 <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de>
Date: Sat, 3 Dec 2022 20:35:06 +0100
Subject: [PATCH] Improve violation count badge in scheduler

Show total count of violations as number, but only mark in orange if there are any violations that are not manually resolved already
---
 .../admin/AKScheduling/scheduling.html         | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/AKScheduling/templates/admin/AKScheduling/scheduling.html b/AKScheduling/templates/admin/AKScheduling/scheduling.html
index fc07b69d..5d15411c 100644
--- a/AKScheduling/templates/admin/AKScheduling/scheduling.html
+++ b/AKScheduling/templates/admin/AKScheduling/scheduling.html
@@ -196,16 +196,17 @@
             const cv_callback_success = function(response) {
                let table_html = '';
 
-               if(response.length > 0) {
-                   // Update violation count badge
-                   $('#violationCountBadge').html(response.length).removeClass('badge-success').addClass('badge-warning');
+               let unresolved_violations_count = 0;
 
+               if(response.length > 0) {
                    // Update violations table
                    for(let i=0;i<response.length;i++) {
                        if(response[i].manually_resolved)
                            table_html += '<tr class="text-muted"><td class="nowrap">{% fa5_icon "check" "fas" %} ';
-                       else
+                       else {
                            table_html += '<tr><td>';
+                           unresolved_violations_count++;
+                       }
 
                        if(response[i].level_display==='{% trans "Violation" %}')
                            table_html += '{% fa5_icon "exclamation-triangle" "fas" %}';
@@ -217,13 +218,16 @@
                    }
                }
                else {
-                   // Update violation count badge
-                   $('#violationCountBadge').html(0).removeClass('badge-warning').addClass('badge-success');
-
                    // Update violations table
                    table_html ='<tr class="text-muted"><td colspan="2" class="text-center">{% trans "No violations" %}</td></tr>'
                }
 
+               // Update violation count badge
+                if(unresolved_violations_count > 0)
+                    $('#violationCountBadge').html(response.length).removeClass('badge-success').addClass('badge-warning');
+                else
+                    $('#violationCountBadge').html(0).removeClass('badge-warning').addClass('badge-success');
+
                // Show violation list (potentially empty) in violations table
                $('#violationsTableBody').html(table_html);
             }
-- 
GitLab