914829451ce180351f7822e72d4cdb25a9d8221e
hiram
  Tue Nov 3 09:43:39 2020 -0800
back to the hidden div method of transmitting jsonData is present refs #21980

diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js
index b552cf4..9f76930 100644
--- src/hg/js/hgTracks.js
+++ src/hg/js/hgTracks.js
@@ -4679,78 +4679,91 @@
       if (! tdDataId) { return; } // not sure why objects are not always found
       // there should be a more simple jQuery function to bind these events
       tdDataId.addEventListener('mousemove', mouseOver.mouseMoveDelay);
       tdDataId.addEventListener('mouseout', mouseOver.popUpDisappear);
       var itemCount = 0;	// just for monitoring purposes
       // save incoming x1,x2,v data into the mouseOver.spans[trackName][] array
       for (var span in arr[trackName]) {
         mouseOver.spans[trackName].push(arr[trackName][span]);
        ++itemCount;
       }
       mouseOver.tracks[trackName] = itemCount;	// merely for debugging watch
       }
     },  //      receiveData: function (arr)
 
     failedRequest: function(trackName)
-    {
+    {   // failed request to get json data, remove it from the track list
       if (mouseOver.tracks[trackName]) {
 //      alert("failed request trackName: '"+ trackName + "'");
         delete mouseOver.tracks[trackName];
       }
     },
 
     // =========================================================================
     // fetchMapData() sends JSON request, callback to receiveData() upon return
     // =========================================================================
     fetchMapData: function (url, trackName)
     {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
        if (4 === this.readyState && 200 === this.status) {
           var mapData = JSON.parse(this.responseText);
           mouseOver.receiveData(mapData);
        } else {
           if (4 === this.readyState && 404 === this.status) {
              mouseOver.failedRequest(trackName);
           }
        }
     };
     xmlhttp.open("GET", url, true);
     xmlhttp.send();  // sends request and exits this function
                      // the onreadystatechange callback above will trigger
                      // when the data has safely arrived
     },
 
     getData: function ()
-    {	// verify hgTracks and hgTracks.trackDb exist before running wild
+    {
+    // check for the hidden div elements for mouseOverData
+    var trackList = document.getElementsByClassName("mouseOverData");
+    for (var i = 0; i < trackList.length; i++) {
+      var jsonData = trackList[i].getAttribute('jsonData');
+      var trackName = trackList[i].getAttribute('name');
+      mouseOver.fetchMapData(jsonData, trackName);
+    }
+
+    // verify hgTracks and hgTracks.trackDb exist before running wild
+/* obsolete method of finding tracks by track type, not all wiggle
+    tracks are identified as type 'wig' or 'bigWig', for example
+    a bam track displayed as a density graph isn't such a type.
       if (typeof(hgTracks) !== "undefined") {
         if (typeof (hgTracks.trackDb) !== "undefined") {
           for (var trackName in hgTracks.trackDb) {
            var rec = hgTracks.trackDb[trackName];
            if (rec.visibility !== 2) { continue; }
            var isWiggle = false;
            if (rec.type.includes("wig")) { isWiggle = true; }
            if (rec.type.includes("bigWig")) { isWiggle = true; }
            if (! isWiggle) { continue; }
            var imgData = "img_data_" + trackName;
            var imgElement  = document.getElementById(imgData);
            if (imgElement) {
              mouseOver.fetchMapData(mouseOver.jsonFileName(imgElement, trackName), trackName);
            }
          }
        }
      }
+*/
     },
 
     // any scrolling turns the popUp message off
     scroll: function()
     {
     if (mouseOver.visible) { mouseOver.popUpDisappear(); }
     },
 
     addListener: function () {
         mouseOver.visible = false;
         window.addEventListener('scroll', mouseOver.scroll, false);
         window.addEventListener('load', mouseOver.getData, false);
     }
 };	//	var mouseOver