e56876e545b21501152e96f655141eb3b229cf0c
hiram
  Fri Feb 25 16:19:26 2022 -0800
add in bioSample and bioProject columns and control of IUCN display refs #28930

diff --git src/hg/js/gar.js src/hg/js/gar.js
index e670fe7..20ec45b 100644
--- src/hg/js/gar.js
+++ src/hg/js/gar.js
@@ -121,86 +121,96 @@
         });
       }
     },	//	discoverColumnsCheckboxes: function()
 
 /* column names:
 <col id='comName' span='1' class=colGComName>
 <col id='sciName' span='1' class=colGSciName>
 <col id='asmId' span='1' class=colGAsmId>
 <col id='asmSize' span='1' class=colGAsmSize>
 <col id='seqCount' span='1' class=colGAsmSeqCount>
 <col id='scafN50' span='1' class=colGScafN50>
 <col id='ctgN50' span='1' class=colGContigN50>
 <col id='IUCN' span='1' class=colGIUCN>
 <col id='taxId' span='1' class=colGTaxId>
 <col id='asmDate' span='1' class=colGAsmDate>
+<col id='bioSample' span='1' class=colGBioSample>
+<col id='bioProject' span='1' class=colGBioProject>
 <col id='submitter' span='1' class=colGSubmitter>
+<col id='clade' span='1' class=colGClade>
 */
 
     // given a category and a counts Map, increment the count for that category
     incrementCount: function(category, counts) {
       if (counts.get(category)) {
         counts.set(category, counts.get(category) + 1);
       } else {
         counts.set(category, 1);
       }
     },
 
     // given a category and a counts Map, and some flags
-    countVisHidden: function(category, counts, gca, gcf, canBeReq, ucscDb) {
+    countVisHidden: function(category, counts, gca, gcf, canBeReq, ucscDb, hasIucn) {
        gar.incrementCount(category, counts);
        if (gca) { gar.incrementCount('gca', counts); }
        if (gcf) { gar.incrementCount('gcf', counts); }
+       if (hasIucn) { gar.incrementCount('iucn', counts); }
        if (canBeReq) {
           gar.incrementCount('gar', counts);
        } else {
           gar.incrementCount('gak', counts);
        }
     },
 
     // foreach table, for each row in the table, count visible rows
     countVisibleRows: function(et) {
 //      var t0 = gar.millis();
       var comNameRow = gar.columnNames.get('comName');
       var asmIdRow = gar.columnNames.get('asmId');
+      var iucnRow = gar.columnNames.get('IUCN');
       var cladeRow = gar.columnNames.get('clade');
       var visRows = 0;
       var totalRows = 0;
       // key is category name, value is count visible
       var categoryVisible = new Map();
       // key is category name, value is count hidden
       var categoryHidden = new Map();
       var i = 0;
       for (i = 0; i < gar.cladeTableList.length; i++) {
         for (var j = 0; j < gar.cladeTableList[i].rows.length; j++) {
           var rowId = gar.cladeTableList[i].rows[j];
           var tagN = rowId.parentNode.tagName.toLowerCase();
           // ignore thead and tfoot rows
           if (tagN === "thead" || tagN === "tfoot") { continue; }
           ++totalRows;
           var thisClade = rowId.cells[cladeRow].innerHTML;
           var asmId = rowId.cells[asmIdRow].innerHTML;
           var isGCA = asmId.includes("GCA");
           var isGCF = asmId.includes("GCF");
           var comName = rowId.cells[comNameRow].innerHTML;
           var canBeRequested = comName.includes("button");
           var ucscDb = comName.includes("cgi-bin/hgTracks");
+          var iucnStatus = rowId.cells[iucnRow].innerHTML;
+          var hasIucn = false;
+          if (iucnStatus) {
+             hasIucn = ! iucnStatus.includes("&nbsp;");
+          }
           if ( rowId.style.display !== "none") {
-            gar.countVisHidden(thisClade, categoryVisible, isGCA, isGCF, canBeRequested, ucscDb);
+            gar.countVisHidden(thisClade, categoryVisible, isGCA, isGCF, canBeRequested, ucscDb, hasIucn);
             ++visRows;
           } else {
-            gar.countVisHidden(thisClade, categoryHidden, isGCA, isGCF, canBeRequested, ucscDb);
+            gar.countVisHidden(thisClade, categoryHidden, isGCA, isGCF, canBeRequested, ucscDb, hasIucn);
           }
         }
       }
       var notVis = totalRows - visRows;
       /* fixup the hideAll checkbox status, if there are any rows visible,
        * those hideAll checkboxes should indicate off so they are
        * thereby ready to do the function of 'hideAll'.  Or if all rows
        * are not visible, they should be on to indicate 'hideAll' is in effect
        */
       /* reset the checked status on all the other show/hide check boxes */
       gar.checkBoxNames.forEach(function(checkBox, name) {
          // add the counts (visible/hidden) to the checkBox label text
          var visibleCount = 0;
          if (categoryVisible.get(name)) {
            checkBox.checked = true;