6637c305d27006f311f212614841153ce4aadc98 max Mon Dec 12 17:15:27 2016 -0800 allow a DNA sequence in the position box, refs# 16950 diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js index bc30c21..b25a120 100644 --- src/hg/js/hgTracks.js +++ src/hg/js/hgTracks.js @@ -4303,30 +4303,40 @@ if (newChrom === oldChrom) { imageV2.markAsDirtyPage(); imageV2.navigateInPlace("position=" + newPos, null, false); window.scrollTo(0,0); return false; } } // If not just image update AND there are vis updates waiting... if (cart.updatesWaiting()) { var url = "../cgi-bin/hgTracks?position=" + newPos + "&" + cart.varsToUrlData({ 'db': getDb(), 'hgsid': getHgsid() }); window.location.assign(url); return false; } + // redirect to hgBlat if the input looks like a DNA sequence + // minimum length=19 so we do not accidentally redirect to hgBlat for a gene identifier + // like ATG5 + var dnaRe = new RegExp("^([actgnACTGN]{19,})$"); + if (dnaRe.test(newPos)) { + var blatUrl = "hgBlat?type=BLAT%27s+guess&userSeq="+newPos; + window.location.href = blatUrl; + return false; + } + return true; }); // Have vis box changes update cart through ajax. This helps keep page/cart in sync. vis.initForAjax(); // We reach here from these possible paths: // A) Forward: Full page retrieval: hgTracks is first navigated to (or chrom change) // B) Back-button past a full retrieval (B in: ->A,->b,->c(full page),->d,<-c,<-B(again)) // B1) Dirty page: at least one non-position change (e.g. 1 track vis changed in b) // B2) Clean page: only position changes from A->b->| var curPos = encodeURIComponent(genomePos.get().replace(/,/g,'')); var curDbPos = hgTracks.lastDbPos; var cachedPos = imageV2.history.getState().data.position; var cachedDbPos = imageV2.history.getState().data.lastDbPos; // A) Forward: Full page retrieval: hgTracks is first navigated to (or chrom change)