b795edf30f4dc9d618a3f2afeee5a84909a0c36e
tdreszer
  Fri Sep 17 14:07:49 2010 -0700
superTrack children also need the _sel button
diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js
index 96ecebe..e11d4af 100644
--- src/hg/js/hgTracks.js
+++ src/hg/js/hgTracks.js
@@ -2192,17 +2192,19 @@
     var trackName = visName.substring(0,visName.length - "_id".length)
     var hiddenVis = $("input[name='"+trackName+"']");
     var rec = trackDbJson[trackName];
-    var subtrack = rec.isSubtrack;
     if($(seenVis).val() != "hide")
         $(hiddenVis).val($(seenVis).val());
     else {
         var selCb = $("input#"+trackName+"_sel_id");
         $(selCb).attr('checked',false);  // Can't set it to [] because that means default setting is used.  However, we are explicitly hiding this!
         $(seenVis).attr('disabled',true);  // Can't set it to [] because that means default setting is used.  However, we are explicitly hiding this!
+        var needSel = (rec.parentTrack != undefined);
+        if (needSel) {
         var hiddenSel = $("input[name='"+trackName+"_sel']");
         $(hiddenSel).val('0');  // Can't set it to [] because that means default setting is used.  However, we are explicitly hiding this!
         $(hiddenSel).attr('disabled',false);
-        if(subtrack)
+        }
+        if(rec.isSubtrack)
             $(hiddenVis).val("[]");
         else
             $(hiddenVis).val("hide");
@@ -2220,12 +2222,12 @@
     var hiddenVis = $("input[name='"+trackName+"']");
     var tr = $(selCb).parents('tr.found');
     var rec = trackDbJson[trackName];
-    var subtrack = rec.isSubtrack;
+    var needSel = (rec.parentTrack != undefined);
     var shouldPack = rec.canPack;
     if (shouldPack && rec.shouldPack != undefined && !rec.shouldPack)
         shouldPack = false;
     var checked = $(selCb).attr('checked');
-    //warn(trackName +" selName:"+selName +" justClicked:"+justClicked +" hiddenSel:"+$(hiddenSel).attr('name') +" seenVis:"+$(seenVis).attr('id') +" hiddenVis:"+$(hiddenVis).attr('name') +" subtrack:"+subtrack +" shouldPack:"+shouldPack);
+    //warn(trackName +" selName:"+selName +" justClicked:"+justClicked +" hiddenSel:"+$(hiddenSel).attr('name') +" seenVis:"+$(seenVis).attr('id') +" hiddenVis:"+$(hiddenVis).attr('name') +" needSel:"+needSel +" shouldPack:"+shouldPack);
 
     // First deal with seenVis control
     if(checked) {
@@ -2247,13 +2249,13 @@
     if(setHiddenInputs) {
         if(checked)
             $(hiddenVis).val($(seenVis).val());
-        else if(subtrack)
+        else if(rec.isSubtrack)
             $(hiddenVis).val("[]");
         else
             $(hiddenVis).val("hide");
         $(hiddenVis).attr('disabled',false);
 
-        if(subtrack) {
+        if(needSel) {
             if(checked)
                 $(hiddenSel).val('1');
             else
@@ -2299,21 +2301,7 @@
 }
 
 function findTracksCheckAll(check)
-{
-    // NOTE: Difficulties with "_sel" and "vis" controls:
-    // 1) subtracks need both "sel" and "vis", but non-subtracks need only "vis"
-    // 2) Submit of form instead of ajax is nice (because it allows cancelling changes), but do not want to set any vars, unless specifically changed on form
-    // 3) When unchecked, need to delete vars instead of set them
-    // Solution to "sel", "vis" difficulties
-    // 1) findTracks remains a submit but:
-    // 2) 'sel' and 'vis' input are not named (won't be submitted)
-    // 3) hidden disabled and named 'sel' and 'vis' vars exist
-    // 4a) check subtrack: enable hidden 'sel' and 'vis' track, set to 'on' and pack/full
-    // 4b) check non-track: enable hidden 'vis', set to pack/full
-    // 5a) uncheck subtrack: enable hidden 'sel' and 'vis' track, set to '[]' and '[]'
-    // 5b) uncheck non-track: enable hidden 'vis', set to '[]'
-    // 6) Change vis: enable hidden 'vis', set to non-hidden vis
-
+{ // Checks/unchecks all found tracks.
     var selCbs = $('input.selCb');
     $(selCbs).attr('checked',check);
 
@@ -2331,7 +2319,7 @@
 
 function findTracksCheckAllWithWait(check)
 {
-    waitOnFunction( findTracksCheckAll, check);  // FIXME: wait cursor not working for some reason
+    waitOnFunction( findTracksCheckAll, check);
 }
 
 function findTracksCounts()