dcc09e71de2cb1f61a19f0526e0595ceb8277bb3
hiram
  Fri Feb 25 10:43:00 2022 -0800
adding cell background coloring for the IUCN column and tri-state indication on the hideAll buttons refs #28930

diff --git src/hg/js/gar.js src/hg/js/gar.js
index e9c7c11..e670fe7 100644
--- src/hg/js/gar.js
+++ src/hg/js/gar.js
@@ -227,44 +227,50 @@
          }
       });
       var hideAllList = document.getElementsByClassName('hideAll');
 //      var thisEt = gar.millis() - t0;
       var thisEt = et;
       if (visRows > 0) {
 //        var pageEt = gar.garEndTime.getTime() - window.garStartTime.getTime();
 //        perfDisplay.innerHTML = "countRows  " + gar.garEndTime.getTime() + " - " + window.garStartTime.getTime() + " = page load time " + pageEt + " millis : DOMContentLoaded: " + gar.onLoadTime.getTime();
         if (gar.measureTiming) {
           counterDisplay.innerHTML = "showing " + visRows.toLocaleString() + " assemblies, " + notVis.toLocaleString() + " hidden : process time: " + thisEt + " millis";
         } else {
           counterDisplay.innerHTML = "showing " + visRows.toLocaleString() + " assemblies, " + notVis.toLocaleString() + " hidden";
         }
         for (i = 0; i < hideAllList.length; i++) {
           hideAllList[i].checked = false;
+          if (visRows > 0 && notVis > 0) {
+            hideAllList[i].indeterminate = true;
+          } else {
+            hideAllList[i].indeterminate = false;
+          }
         }
         hideAllLabelList = document.getElementsByClassName('hideAllLabel');
         for (i = 0; i < hideAllLabelList.length; i++) {
           hideAllLabelList[i].innerHTML = "hide all (" + visRows.toLocaleString() + "/" + notVis.toLocaleString() + ")"; 
         }
 
       } else {
         if (gar.measureTiming) {
           counterDisplay.innerHTML = totalRows.toLocaleString() + " total ssemblies : use the selection menus to select subsets : process time: " + thisEt + " millis";
         } else {
           counterDisplay.innerHTML = totalRows.toLocaleString() + " total ssemblies : use the selection menus to select subsets";
         }
         for (i = 0; i < hideAllList.length; i++) {
           hideAllList[i].checked = true;
+          hideAllList[i].indeterminate = false;
         }
         hideAllLabelList = document.getElementsByClassName('hideAllLabel');
         for (i = 0; i < hideAllLabelList.length; i++) {
           hideAllLabelList[i].innerHTML = "hide all (" + visRows.toLocaleString() + "/" + notVis.toLocaleString() + ")"; 
         }
       }
     },
 
     // given a column number n, and true/false in tf
     // set that column visibility
     setColumnNvis: function(n, tf) {
       for (var i = 0; i < gar.cladeTableList.length; i++) {
         for (var j = 0; j < gar.cladeTableList[i].rows.length; j++) {
           var c = gar.cladeTableList[i].rows[j].cells[n];
           if (c) {