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