1db991496a55b1a1ee20c9e07d9909cbb0d42b5d larrym Tue Oct 25 11:47:30 2011 -0700 replace some instances of $(#...) with document.getElementById to deal with possible metacharacter in track names diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js index fe78332..fb02c8e 100644 --- src/hg/js/hgTracks.js +++ src/hg/js/hgTracks.js @@ -1862,31 +1862,31 @@ // First change the select on our form: var rec = hgTracks.trackDb[id]; var selectUpdated = vis.update(id, cmd); // Now change the track image if(imageV2.enabled && cmd == 'hide') { // Hide local display of this track and update server side cart. // Subtracks controlled by 2 settings so del vis and set sel=0. Others, just set vis hide. if(tdbIsSubtrack(rec)) setCartVars( [ id, id+"_sel" ], [ '[]', 0 ] ); // Remove subtrack level vis and explicitly uncheck. else if(tdbIsFolderContent(rec)) setCartVars( [ id, id+"_sel" ], [ 'hide', 0 ] ); // supertrack children need to have _sel set to trigger superttrack reshaping else setCartVar(id, 'hide' ); - $('#tr_' + id).remove(); + $(document.getElementById('tr_' + id)).remove(); dragReorder.init(); dragSelect.load(false); imageV2.markAsDirtyPage(); } else if (!imageV2.mapIsUpdateable) { jQuery('body').css('cursor', 'wait'); if(selectUpdated) { // assert(document.TrackForm); document.TrackForm.submit(); } else { // add a hidden with new visibility value var form = $(document.TrackHeaderForm); $("<input type='hidden' name='"+id+"'value='"+cmd+"'>").appendTo(form); document.TrackHeaderForm.submit(); } } else { @@ -2296,31 +2296,31 @@ { // When hgTrackUi Cfg popup closes with ok, then update cart and refresh parts of page var rec = hgTracks.trackDb[trackName]; var subtrack = tdbIsSubtrack(rec) ? trackName :undefined; // If subtrack then vis rules differ var allVars = getAllVars($('#pop'), subtrack ); var changedVars = varHashChanges(allVars,popUp.saveAllVars); //warn("cfgVars:"+varHashToQueryString(changedVars)); var newVis = changedVars[trackName]; var hide = (newVis != null && (newVis == 'hide' || newVis == '[]')); // subtracks do not have "hide", thus '[]' if($('#imgTbl') == undefined) { // On findTracks or config page setVarsFromHash(changedVars); //if(hide) // TODO: When findTracks or config page has cfg popup, then vis change needs to be handled in page here } else { // On image page if(hide) { setVarsFromHash(changedVars); - $('#tr_' + trackName).remove(); + $(document.getElementById('tr_' + trackName)).remove(); dragReorder.init(); dragSelect.load(false); } else { // Keep local state in sync if user changed visibility if(newVis != null) { vis.update(trackName, newVis); } var urlData = varHashToQueryString(changedVars); if(urlData.length > 0) { if(imageV2.mapIsUpdateable) { imageV2.requestImgUpdate(trackName,urlData,""); } else { window.location = "../cgi-bin/hgTracks?" + urlData + "&hgsid=" + getHgsid(); } @@ -2513,31 +2513,31 @@ // Turn on drag scrolling. if(hgTracks.imgBoxPortal) { $("div.scroller").panImages(); } imageV2.loadRemoteTracks(); imageV2.markAsDirtyPage(); }, updateImgForId: function (html, id) { // update row in imgTbl for given id. // return true if we successfully pull slice for id and update it in imgTrack. var str = "<TR id='tr_" + id + "'[^>]*>([\\s\\S]+?)</TR>"; var reg = new RegExp(str); var a = reg.exec(html); if(a && a[1]) { - var tr = $('#tr_' + id); + var tr = $(document.getElementById("tr_" + id)); if (tr.length > 0) { $(tr).html(a[1]); // NOTE: Want to examine the png? Uncomment: //var img = $('#tr_' + id).find("img[id^='img_data_']").attr('src'); //warn("Just parsed image:<BR>"+img); // >1x dragScrolling needs some extra care. if(hgTracks.imgBoxPortal && (hgTracks.imgBoxWidth > hgTracks.imgBoxPortalWidth)) { if (hgTracks.imgBoxPortalLeft != undefined) { $(tr).find('.panImg').css({'left': hgTracks.imgBoxPortalLeft }); $(tr).find('.tdData').css( {'backgroundPosition': hgTracks.imgBoxPortalLeft}); } } return true; @@ -2671,31 +2671,31 @@ if(b[1]) { $('#chrom').attr('src', b[1]); } } if(hgTracks.measureTiming) { imageV2.updateTiming(response); } if(this.disabledEle) { this.disabledEle.attr('disabled', ''); } if(this.loadingId) { hideLoadingImage(this.loadingId); } jQuery('body').css('cursor', ''); if(this.currentId) { - var top = $("#tr_" + this.currentId).position().top; + var top = $(document.getElementById("tr_" + this.currentId)).position().top; $(window).scrollTop(top - this.currentIdYOffset); } }, loadRemoteTracks: function () { if(typeof(hgTracks.trackDb) != "undefined" && hgTracks.trackDb != null) { for (var id in hgTracks.trackDb) { var rec = hgTracks.trackDb[id]; if(rec.type == "remote") { if($("#img_data_" + id).length > 0) { // load the remote track renderer via jsonp rec.loadingId = showLoadingImage("tr_" + id); var script = document.createElement('script'); var pos = parsePosition(genomePos.get()); @@ -2815,31 +2815,31 @@ } } return true; }, navigateInPlace: function (params, disabledEle, keepCurrentTrackVisible) { // request an hgTracks image, using params // disabledEle is optional; this element will be enabled when update is complete // If keepCurrentTrackVisible is true, we try to maintain relative position of the item under the mouse after the in-place update. jQuery('body').css('cursor', ''); var currentId, currentIdYOffset; if(keepCurrentTrackVisible) { var item = rightClick.currentMapItem || imageV2.lastTrack; if(item) { - var top = $("#tr_" + item.id).position().top; + var top = $(document.getElementById("tr_" + item.id)).position().top; if(top >= $(window).scrollTop() || top < $(window).scrollTop() + $(window).height()) { // don't bother if the item is not currently visible. currentId = item.id; currentIdYOffset = top - $(window).scrollTop(); } } } $.ajax({ type: "GET", url: "../cgi-bin/hgTracks", data: params + "&hgt.trackImgOnly=1&hgt.ideogramToo=1&hgsid=" + getHgsid(), dataType: "html", trueSuccess: imageV2.updateImgAndMap, success: catchErrorOrDispatch,