db7c8abb6d7674bb26f579eabb58bc080ce76fdd
max
  Tue May 12 07:04:05 2020 -0700
adding a protease track to uniprot, refs #25192

diff --git src/hg/js/subCfg.js src/hg/js/subCfg.js
index 23b3ede..d0fa21a 100644
--- src/hg/js/subCfg.js
+++ src/hg/js/subCfg.js
@@ -619,155 +619,178 @@
         subCfg.currentCfg = cfg;
         subCfg.currentSub = subtrack;
 
         $.ajax({
             type: "GET",
             url: "../cgi-bin/hgTrackUi?ajax=1&g="+subtrack+"&hgsid="+getHgsid()+"&db="+getDb(),
             dataType: "html",
             trueSuccess: subCfg.cfgFill,
             success: catchErrorOrDispatch,
             error: errorHandler,
             cmd: "cfg",
             cache: false
         });
     },
 
+    enableSubtrack: function (subCb) 
+    { // enable subtrack config and make its checkbox checked
+        //subCb.checked = true;
+        // must also update the boolshad shadow control
+        //var boolshad = normed($("input.cbShadow[name='boolshad\\." + subCb.name+"']"));
+        //boolshad.value = "1";
+        subCfg.checkOneSubtrack(subCb, true, true);
+
+        //subCfg.enableCfg(subCb, true);
+        //subCfg.markChange(null,subCb);
+    },
+
     replaceWithVis: function (obj,subtrack,open)
     { // Replaces the current fauxVis object with a true visibility selector
 
-        if ($(obj).hasClass('disabled'))
-            return;
+        if ($(obj).hasClass('disabled')) {
+            //return;
+            var subCb = normed($("input[name='" + subtrack + "_sel']"));
+            subCfg.enableSubtrack(subCb, true);
+        }
         var classList = $( obj ).attr("class").split(" ");
         classList = aryRemove(classList,["disabled"]);
         var view = classList[classList.length - 1]; // This relies on view being the last class!!!
         var selectHtml  = "<SELECT name='"+subtrack+"' class='normalText subVisDD "+view+"'";
             selectHtml += " style='width:70px;'>";
         var selected = $(obj).text();
         var visibilities = ['hide','dense','squish','pack','full'];
         if (subCfg.canPack === false)
             visibilities = ['hide','dense','full'];
         $(visibilities).each( function (ix) {
-             selectHtml += "<OPTION"+(visibilities[ix] === selected ? " SELECTED":"")+">";
+             var addStr = "";
+             if (ix===0)
+                addStr = " HIDDEN ";
+             selectHtml += "<OPTION"+(visibilities[ix] === selected ? " SELECTED":"")+addStr+">";
              selectHtml += visibilities[ix]+"</OPTION>";
         });
         selectHtml += "</SELECT>";
         $(obj).replaceWith(selectHtml);
         var newObj = $("select[name='"+subtrack+"']");
         if (open) {
             $(newObj).css({'zIndex':'2','vertical-align':'top'});
             // For some reason IE11 will hang if the sect is opened to start with!
             // This ungraceful fix avoids the hang, but a nicer solution would be apprciated!
             if (theClient.isIePost11() === false) { 
                 $(newObj).attr('size',visibilities.length);
             }
             $(newObj).one('blur',function (e) {
                 $(this).attr('size',1);
                 $(this).unbind('click');
             });
             $(newObj).one('click',function (e) {
                 $(this).attr('size',1);
                 $(this).unbind('blur');
             });
             $(newObj).focus();
         }
         $(newObj).change(function (e) {
             if ($(this).attr('size') > 1) {
                 $(this).attr('size',1);
                 $(this).unbind('blur');
                 $(this).unbind('click');
             }
+            var subCb = normed($("input[name='" + this.name + "_sel']"));
             if (this.selectedIndex === 0) { // setting to hide so uncheck and disable.
                 // Easiest is to uncheck subCB and reset vis
                 //    so that the reverse action makes sense
-                var subCb = normed($("input[name='" + this.name + "_sel']"));
                 if (subCb) {
                     subCfg.checkOneSubtrack(subCb,false,true);
                     subCfg.inheritSetting(this,true);
                 } else {
                     warn('DEBUG: Cant find subCB for ' + this.name);
                 }
             } else {
                 subCfg.markChange(e,this);
+                // make sure that current track is really visible (dropdown is not disabled, even for hidden tracks)
+                subCfg.enableSubtrack(subCb, true);
                 // If made visible, be sure to make composite visible
                 // But do NOT turn composite from hide to full, since it will turn on other subs
                 // Just trigger a supertrack reshaping
                 if (this.selectedIndex > 0) {
                     //exposeAll();
                     var visDD = normed($("select.visDD"));
                     if (visDD) {
                         if ($(visDD).hasClass('superChild'))
                             visTriggersHiddenSelect(visDD);
                     }
                 }
             }
         });
     },
 
     enableCfg: function (subCb,setTo)
     { // Enables or disables subVis and wrench
         var tr = normed($(subCb).closest('tr'));
         if (!tr) {
             warn("DEBUG: subCfg.enableCfg() could not find TR for CB: "+subCb.name);
             return false;
         }
         var subFaux = normed($(tr).find('div.subVisDD'));
         if (subFaux) {
             if (setTo === true)
                 $(subFaux).removeClass('disabled');
             else
                 $(subFaux).addClass('disabled');
         } else {
             var subVis = normed($(tr).find('select.subVisDD'));
-            if (subVis) {
-                $(subVis).attr('disabled',!setTo);
-            }
+            //if (subVis) {
+                //$(subVis).attr('disabled',!setTo);
+            //}
         }
         var wrench = normed($(tr).find('span.clickable'));
         if (wrench) {
             if (setTo === true)
                 $(wrench).removeClass('disabled');
             else {
                 $(wrench).addClass('disabled');
                 var cfg = normed($(tr).find('div.subCfg'));
                 if (cfg)
                     $(cfg).hide();
             }
         }
     },
 
     cfgToggle: function (wrench,subtrack)
     { // Opens/closes subtrack cfg dialog, populating if empty
         var cfg = normed($("div#div_cfg_"+subtrack));
         if (!cfg) {
             warn("DEBUG: Can't find div_cfg_"+subtrack);
             return false;
         }
 
         if ($(cfg).css('display') === 'none') {
-            if ($(wrench).hasClass('disabled'))
-                return;
-            // Don't allow if this composite is not enabled!
             // find the cb
             var tr = $(cfg).parents('tr').first();
             var subCb = normed($(tr).find("input[name='"+subtrack+"_sel']"));
             if (!subCb) {
-                warn("DEBUG: Can't find subCB for "+subtrack);
+                warn("DEBUG: Can't find subtrack checkbox DOM element for "+subtrack);
                 return false;
             }
+            // activate this subtrack if it previously was disabled
+            if ($(wrench).hasClass('disabled'))
+                subCfg.enableSubtrack(subCb);
+                //subCfg.enableCfg(subCb, true);
+
             //if (subCb.disabled === true) // || subCb.checked === false)
-            if (isFauxDisabled(subCb,true))
+            if (isFauxDisabled(subCb,true)) {
                 return false;
+            }
 
             if (metadataIsVisible(subtrack))
                 metadataShowHide(subtrack,"","");
             if ($(cfg).hasClass('filled'))
                 $(cfg).show();
             else
                 waitOnFunction( subCfg.cfgPopulate, cfg, subtrack );
         } else
             $(cfg).hide();
         return false; // called by link!
     },
 
     viewInit: function (viewTag)
     { // sets up view controls for propagation
         var tr = normed($('tr#tr_cfg_'+viewTag));