ae63ce55185746c5fabb2ead8cc20215faada36d max Mon Nov 3 08:03:14 2025 -0800 adding ancient dna track, refs #36592 diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js index 6fab07f3819..1e693cd39dc 100644 --- src/hg/js/hgTracks.js +++ src/hg/js/hgTracks.js @@ -877,31 +877,34 @@ if (typeof varsObj !== 'undefined' && objNotEmpty(varsObj)) { //console.log('cart.queueVarsObj: were:'+objKeyCount(cart.updateQueue) + // ' new:'+objKeyCount(varsObj)); for (var name in varsObj) { cart.updateQueue[name] = varsObj[name]; } } }, addVarsToQueue: function (names,values) { // creates a string of updates to save for ajax batch or a submit cart.queueVarsObj(arysToObj(names,values)); }, updateSessionPanel: function() + /* This function tries to find out if the current cart changed enough. It is not used anymore, as the + * current active rec. track set name is not shown anymore */ { + // this is never set anymore if (typeof recTrackSetsDetectChanges === 'undefined' || recTrackSetsDetectChanges === null) return; // change color of text $('span.gbSessionChangeIndicator').addClass('gbSessionChanged'); // change mouseover on the panel. A bit fragile here inserting text in the mouseover specified in // hgTracks.js, so depends on match with text there, and should present same message as C code // (Perhaps this could be added as a script tag, so not duplicated) var txt = $('span.gbSessionLabelPanel').attr('title'); if (txt && !txt.match(/with changes/)) { $('span.gbSessionLabelPanel').attr('title', txt.replace( "track set", "track set, with changes (added or removed tracks) you have requested")); } @@ -2337,31 +2340,31 @@ hitFinish: function (menuItemClicked, menuObject, cmd, args) { // dispatcher for context menu hits var id = rightClick.selectedMenuItem.id; var url = null; // TODO: Break this giant routine with shared vars into some sub-functions var href = null; var rec = null; var row = null; var rows = null; var selectUpdated = null; function mySuccess() {} if (menuObject.shown) { // warn("Spinning: menu is still shown"); setTimeout(function() { rightClick.hitFinish(menuItemClicked, menuObject, cmd); }, 10); return; } - if (cmd === 'selectWholeGene' || cmd === 'getDna' || cmd === 'highlightItem') { + if (cmd === 'selectWholeGene' || cmd === 'getDna' || cmd === 'highlightItem' || cmd === 'highlightThisRegion') { // bring whole gene into view or redirect to DNA screen. href = rightClick.selectedMenuItem.href; var chrom, chromStart, chromEnd; // Many links leave out the chrom (b/c it's in the server side cart as "c") // var chrom = hgTracks.chromName; // This is no longer acceptable // with multi-window capability drawing multiple positions on multiple chroms. var a = /hgg_chrom=(\w+)&/.exec(href); if (a) { if (a && a[1]) chrom = a[1]; a = /hgg_start=(\d+)/.exec(href); if (a && a[1]) chromStart = parseInt(a[1]) + 1; a = /hgg_end=(\d+)/.exec(href); if (a && a[1]) @@ -2398,30 +2401,32 @@ if (result.chromStart != -1) { var newPos2 = hgTracks.chromName+":"+(result.chromStart+1)+"-"+result.chromEnd; dragSelect.highlightThisRegion(newPos2, true); } } else { var newChrom = hgTracks.chromName; if (hgTracks.windows && hgTracks.virtualSingleChrom) { newChrom = hgTracks.windows[0].chromName; } var newPos3 = newChrom+":"+(parseInt(chromStart))+"-"+parseInt(chromEnd); dragSelect.highlightThisRegion(newPos3, true); } + } else if (cmd === 'highlightThisItem') { + } else { var newPosition = genomePos.setByCoordinates(chrom, chromStart, chromEnd); var reg = new RegExp("hgg_gene=([^&]+)"); var b = reg.exec(href); var name; // pull item name out of the url so we can set hgFind.matches (redmine 3062) if (b && b[1]) { name = b[1]; } else { reg = new RegExp("[&?]i=([^&]+)"); b = reg.exec(href); if (b && b[1]) { name = b[1]; } } @@ -2955,30 +2960,37 @@ if (displayItemFunctions) { o[rightClick.makeImgTag("magnify.png") + " Zoom to " + title] = { onclick: function(menuItemClicked, menuObject) { rightClick.hit(menuItemClicked, menuObject, "selectWholeGene"); return true; } }; o[rightClick.makeImgTag("highlight.png") + " Highlight " + title] = { onclick: function(menuItemClicked, menuObject) { rightClick.hit(menuItemClicked, menuObject, "highlightItem"); return true; } }; + o[rightClick.makeImgTag("highlight.png") + " Highlight THIS item"] = + { onclick: function(menuItemClicked, menuObject) { + rightClick.hit(menuItemClicked, menuObject, + "highlightThisItem"); + return true; + } + }; if (rightClick.supportZoomCodon && (rec.type.indexOf("genePred") !== -1 || rec.type.indexOf("bigGenePred") !== -1)) { // http://hgwdev-larrym.gi.ucsc.edu/cgi-bin/hgGene?hgg_gene=uc003tqk.2&hgg_prot=P00533&hgg_chrom=chr7&hgg_start=55086724&hgg_end=55275030&hgg_type=knownGene&db=hg19&c=chr7 var name, table; var reg = new RegExp("hgg_gene=([^&]+)"); let a = reg.exec(href); if (a && a[1]) { name = a[1]; reg = new RegExp("hgg_type=([^&]+)"); a = reg.exec(href); if (a && a[1]) { table = a[1]; } } else { // http://hgwdev-larrym.gi.ucsc.edu/cgi-bin/hgc?o=55086724&t=55275031&g=refGene&i=NM_005228&c=chr7