9d2d19a718d8c3d99f5d73ab1a16283d2fa39c9b
max
  Mon Sep 15 03:57:22 2025 -0700
adding a hide all button to hub group blue bars, refs #36354

diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js
index 2e8b05ecca3..c5fcf33a5d6 100644
--- src/hg/js/hgTracks.js
+++ src/hg/js/hgTracks.js
@@ -3841,30 +3841,38 @@
     $('body').append(dialogHtml);
 
     // Initialize the dialog
     $("#hubQuickDialog").dialog({
         autoOpen: false,
         width: 600,
         height: 400,
         modal: true,
         // not showing a Cancel button, the standard X should be sufficient and the user can always use Esc
     });
 
     // Show dialog
     $("#hubQuickDialog").dialog("open");
 }
 
+function onHideAllGroupButtonClick(ev) {
+    /* called when 'hide all' button is clicked on group blue bar menu */
+    let groupName = ev.target.getAttribute("data-group-name");
+    let visSelects = document.querySelectorAll(`tr[id^="${groupName}"] select`);
+    for (let sel of visSelects) {
+        sel.value = "hide";
+    }
+}
 
 // A function for the keyboard shortcuts "zoom to x bp"
 function zoomTo(zoomSize) {
     var flankSize = Math.floor(zoomSize/2);
     var posStr = genomePos.get();
     posStr = posStr.replace("virt:", "multi:");
     var pos = parsePosition(posStr);
     var mid = pos.start+(Math.floor((pos.end-pos.start)/2));
     var newStart = Math.max(mid - flankSize, 0);
     var newEnd = mid + flankSize - 1;
     var newPos = genomePos.setByCoordinates(pos.chrom, newStart, newEnd);
     if (hgTracks.virtualSingleChrom && (newPos.search("multi:")===0))
         newPos = genomePos.disguisePosition(newPosition); // DISGUISE?
     imageV2.navigateInPlace("db=" + getDb() + "&position="+newPos, null, true);
 }