9b0b0bcba6332c559c8834d1b34c386b9692e485 hiram Mon Nov 16 08:25:02 2020 -0800 avoid wigMaf track types and composite tracks with children (overlayed wiggles) refs #21980 diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js index 730b127..e3b4126 100644 --- src/hg/js/hgTracks.js +++ src/hg/js/hgTracks.js @@ -3783,31 +3783,31 @@ } // Need to update vis box (in case this is reached via back-button) if (imageV2.backSupport && fullImageReload) { // Update abbr so that rows can be resorted properly var abbr = $(newTr).attr('abbr'); if (abbr) { $(tr).attr('abbr', abbr); } if (newJsonRec) vis.update(id, vis.enumOrder[newJsonRec.visibility]); } // hg.conf will turn this on 2020-10 - Hiram - if (window.mouseOverEnabled) { mouseOver.updateMouseOver(id); } + if (window.mouseOverEnabled) { mouseOver.updateMouseOver(id, newJsonRec); } return true; } } return false; }, updateImgForAllIds: function (response, oldJson, newJson) { // update all rows in imgTbl based upon navigateInPlace response. var imgTbl = $('#imgTbl'); // We update rows one at a time // (b/c updating the whole imgTbl at one time doesn't work in IE). var id; for (id in newJson.trackDb) { var newJsonRec = newJson.trackDb[id]; @@ -4486,47 +4486,60 @@ // tracks{} - tracks that were set up initially, key is track name // value is the number of boxes (for debugging) // maximumWidth{} - key is track name, value is length of longest // number string as measured when rendered // given hgt_....png file name, change to trackName_....json file name jsonFileName: function(imgElement, trackName) { var jsonFile=imgElement.src.replace("hgt/hgt_", "hgt/" + trackName + "_"); jsonFile = jsonFile.replace(".png", ".json"); return jsonFile; }, // called from: updateImgForId when it has updated a track in place // need to refresh the event handlers and json data - updateMouseOver: function (trackName) + updateMouseOver: function (trackName, trackDb) { + var trackType = null; + var hasChildren = null; + if (trackDb) { + trackType = trackDb.type; + hasChildren = trackDb.hasChildren; + } else { + if (hgTracks.trackDb) { + if (hgTracks.trackDb[trackName]) { + trackType = hgTracks.trackDb[trackName].type; + } + } + } var tdData = "td_data_" + trackName; var tdDataId = document.getElementById(tdData); var imgData = "img_data_" + trackName; var imgElement = document.getElementById(imgData); if (imgElement && tdDataId) { if (mouseOver.tracks[trackName]) { $( tdDataId ).mousemove(mouseOver.mouseMoveDelay); $( tdDataId ).mouseout(mouseOver.popUpDisappear); mouseOver.fetchMapData(mouseOver.jsonFileName(imgElement, trackName), trackName); } else { - if (hgTracks.trackDb[trackName]) { - var trackType = hgTracks.trackDb[trackName].type; + if (trackType) { var validType = false; if (trackType.indexOf("wig") === 0) { validType = true; } if (trackType.indexOf("bigWig") === 0) { validType = true; } + if (trackType.indexOf("wigMaf") === 0) { validType = false; } + if (hasChildren) { validType = false; } if (validType) { $( tdDataId ).mousemove(mouseOver.mouseMoveDelay); $( tdDataId ).mouseout(mouseOver.popUpDisappear); mouseOver.fetchMapData(mouseOver.jsonFileName(imgElement, trackName), trackName); } } } } }, // given an X coordinate: x, find the index idx // in the rects[idx] array where rects[idx].x1 <= x < rects[idx].x2 // returning -1 when not found // if we knew the array was sorted on x1 we could get out early // when x < x1