05e67c59a20a5d00b810a981aef3b00c5bef82e1
max
  Fri Sep 20 06:03:18 2024 -0700
more features to hubtools: search in both parent and subdirs, better docs

diff --git src/hg/js/subCfg.js src/hg/js/subCfg.js
index e7e843d..74612f1 100644
--- src/hg/js/subCfg.js
+++ src/hg/js/subCfg.js
@@ -431,38 +431,51 @@
             } else { // No view so, simple
 
                 var visText = 'hide';
                 if (parentVis === 1)
                     visText = 'dense';
                 else if (parentVis === 2) {
                     if (subCfg.canPack)
                         visText = 'squish';
                     else
                         visText = 'full';
                 } else if (parentVis === 3)
                     visText = 'pack';
                 else if (parentVis === 4)
                     visText = 'full';
                 var children = subCfg.visChildrenFind(parentObj);
+
+                var checkedCount = 0;
                 $(children).each(function (i) {
+                    // the checkbox is in the <td> right before the one of $(this)
+                    if ($(this).parent().prev().find("[type='checkbox']")[0].checked)
+                        checkedCount++;
+
+                    // apply the visibility to the subtrack
                     if ($(this).hasClass('fauxInput')) {
                         $(this).text(visText);
                     } else {
                         $(this).attr('selectedIndex',parentVis);
                         subCfg.clearChange(this);
                     }
                 });
+
+                // when nothing is checked, the visibility has been applied but everything is still hidden. 
+                // This is probably not what the user wanted, so in lack of a better idea, we select all checkboxes
+                if (checkedCount === 0)
+                    // check all checkboxes
+                    $(".subCB[type='checkbox']").attr("checked", "checked");
             }
         } else {
             // First get composite vis to limit with
             var compObj = subCfg.compositeObjFind(undefined);
             if (!compObj) {
                 warn('DEBUG: Could not find composite vis object!');
                 return false;
             }
             subCfg.propagateViewVis(parentObj,compObj.selectedIndex);
         }
     },
 
     inheritSetting: function (childObj,force)
     { // update value if parents values override child values.
         var myParents = subCfg.parentsFind(childObj);