64b234ddbabf4a10b74d3797cb3ee32a9ec30436
hiram
  Fri Jan 15 10:38:06 2021 -0800
allow dots in genome assembly names for composite chainNet tracks refs #26584

diff --git src/hg/js/hui.js src/hg/js/hui.js
index 5444e71..4255b3e 100644
--- src/hg/js/hui.js
+++ src/hg/js/hui.js
@@ -307,33 +307,34 @@
         matSubCBsetShadow(subCB,false);
         $(subCB).change();  // NOTE: if "subCfg" then 'change' event will update it
         hideOrShowSubtrack(subCB);
     }
 }
 
 function matSubCBsetShadow(subCB,triggerChange)
 {   // Since CBs only get into cart when enabled/checked,
     // the shadow control enables cart to know other states
     //  will update "subCfg" if needed
     var shadowState = 0;
     if (subCB.checked)
         shadowState = 1;
     if (isFauxDisabled(subCB,true))
         shadowState -= 2;
-    var fourWay = normed($("input.cbShadow#boolshad\\."+subCB.id));
+    var noDot = subCB.id.replace(/\./g, "\\.");
+    var fourWay = normed($("input.cbShadow#boolshad\\."+noDot));
     if (!fourWay) {
-        warn("DEBUG: Failed to find fourWay shadow for '#"+subCB.id);
+        warn("DEBUG: Failed to find fourWay shadow for '#"+noDot);
         return;
     }
     if ($(fourWay).val() !== shadowState.toString()) {
         $(fourWay).val(shadowState);
         if (typeof(subCfg) === "object") { // Is subCfg.js file included
             subCfg.enableCfg(subCB,(shadowState === 1));
             if (triggerChange)
                 $(subCB).change(); // 'change' event will update "subCfg"
         }
     }
 }
 
 function matChkBoxNormalize(matCB)
 {   // Makes sure matCBs are in one of 3 states (checked,unchecked,indeterminate)
     // based on matching set of subCBs