From 9072adece869d38fb19683ed63d2242c1907ac01 Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <edolstra@gmail.com>
Date: Tue, 1 Nov 2016 13:03:14 +0100
Subject: [PATCH] Fix broken logic for showing/hiding jobsets

---
 src/root/common.tt            |  2 +-
 src/root/project.tt           | 30 +++++++++++++++++-------------
 src/root/static/css/hydra.css |  4 ----
 3 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/src/root/common.tt b/src/root/common.tt
index 37500bf3..aa9e4994 100644
--- a/src/root/common.tt
+++ b/src/root/common.tt
@@ -511,7 +511,7 @@ BLOCK renderJobsetOverview %]
   <tbody>
     [% FOREACH j IN jobsets %]
       [% successrate = 0 %]
-      <tr class="[% IF j.hidden && !showHidden %] hidden-jobset [% END %] [% IF !j.enabled %] disabled-jobset [% END %]" >
+      <tr class="jobset [% IF j.hidden && !showHidden %] hidden-jobset [% END %] [% IF !j.enabled %] disabled-jobset [% END %]" >
         <td>
           [% IF j.get_column('nrscheduled') > 0 %]
             <img src="[% c.uri_for("/static/images/help_16.png") %]" alt="Scheduled" />
diff --git a/src/root/project.tt b/src/root/project.tt
index 2621560e..b48341e4 100644
--- a/src/root/project.tt
+++ b/src/root/project.tt
@@ -27,22 +27,26 @@
 <div class="tab-content">
 
   <script type="text/javascript">
+    function showJobsets() {
+      var showHidden = $('#show-hidden').hasClass('active');
+      var showDisabled = $('#show-disabled').hasClass('active');
+      $('tr.jobset').map(function() {
+        var hide =
+          ($(this).hasClass('hidden-jobset') && !showHidden) ||
+          ($(this).hasClass('disabled-jobset') && !showDisabled);
+        if (hide) $(this).hide(); else $(this).show();
+      });
+      return false;
+    };
+
     $(document).ready(function() {
-      $('#show-hidden').on('click', function (e) {
-        var show = !$(this).hasClass('active');
-        if (show)
-          $('tr.hidden-jobset').show();
-        else
-          $('tr.hidden-jobset').hide();
+      $('#show-hidden, #show-disabled').on('click', function(e) {
+        $(this).toggleClass('active');
+        showJobsets();
+        return false;
       });
 
-      $('#show-disabled').on('click', function (e) {
-        var show = !$(this).hasClass('active');
-        if (show)
-          $('tr.disabled-jobset').show();
-        else
-          $('tr.disabled-jobset').hide();
-      });
+      showJobsets();
     });
   </script>
 
diff --git a/src/root/static/css/hydra.css b/src/root/static/css/hydra.css
index acd35d68..b8d9d7b4 100644
--- a/src/root/static/css/hydra.css
+++ b/src/root/static/css/hydra.css
@@ -47,10 +47,6 @@ span.hidden-project a, span.hidden-jobset a {
     color: gray;
 }
 
-tr.hidden-jobset {
-    display: none;
-}
-
 table.info-table th {
     padding-right: 1.0em;
     padding-bottom: 0.2em;