b6c7e9f591caa6a694a60f21c43743df3b594d2c larrym Thu Jan 20 16:12:38 2011 -0800 don't add chrom to wikiTrack links (see redmine #2476); fix cases where didn't show both 'Open details...' and 'Show details...' menu items diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js index d0df6c4..5c38ce7 100644 --- src/hg/js/hgTracks.js +++ src/hg/js/hgTracks.js @@ -1495,30 +1495,31 @@ // XXXX Why does href get changed to "about://" on IE? window.location = o.href; } return true; } } function contextMenuHit(menuItemClicked, menuObject, cmd) { setTimeout(function() { contextMenuHitFinish(menuItemClicked, menuObject, cmd); }, 1); } function contextMenuHitFinish(menuItemClicked, menuObject, cmd) { // dispatcher for context menu hits + var id = selectedMenuItem.id; if(menuObject.shown) { // showWarning("Spinning: menu is still shown"); setTimeout(function() { contextMenuHitFinish(menuItemClicked, menuObject, cmd); }, 10); return; } if(cmd == 'selectWholeGene' || cmd == 'getDna') { // bring whole gene into view or redirect to DNA screen. var href = selectedMenuItem.href; var chromStart, chromEnd; var a = /hgg_chrom=(\w+)&/.exec(href); // Many links leave out the chrom (b/c it's in the server side cart as "c") var chrom = document.getElementById("hgt.chromName").value; if(a) { if(a && a[1]) chrom = a[1]; @@ -1566,37 +1567,34 @@ $.ajax({ type: "GET", url: "../cgi-bin/hgTracks", data: "hgt.trackImgOnly=1&hgt.ideogramToo=1&position=" + newPosition + "&hgsid=" + getHgsid(), dataType: "html", trueSuccess: handleUpdateTrackMap, success: catchErrorOrDispatch, error: errorHandler, cmd: cmd, cache: false }); } } } } else if (cmd == 'hgTrackUi_popup') { - hgTrackUiPopUp( selectedMenuItem.id, false ); // Launches the popup but shields the ajax with a waitOnFunction - } else if (cmd == 'hgTrackUi_follow') { var url = "hgTrackUi?hgsid=" + getHgsid() + "&g="; - var id = selectedMenuItem.id; var rec = trackDbJson[id]; if (tdbHasParent(rec) && tdbIsLeaf(rec)) url += rec.parentTrack else { var link = $( 'td#td_btn_'+ selectedMenuItem.id ).children('a'); // The button already has the ref if( $(link) != undefined) url = $(link).attr('href'); else url += selectedMenuItem.id; } location.assign(url); } else if (cmd == 'dragZoomMode') { autoHideSetting = true; var obj = imgAreaSelect.data('imgAreaSelect'); @@ -1611,66 +1609,65 @@ var data = "hgt.imageV1=1&hgt.trackImgOnly=1&hgsid=" + getHgsid(); jQuery('body').css('cursor', 'wait'); $.ajax({ type: "GET", url: "../cgi-bin/hgTracks", data: data, dataType: "html", trueSuccess: handleViewImg, success: catchErrorOrDispatch, error: errorHandler, cmd: cmd, cache: false }); } else if (cmd == 'openLink' || cmd == 'followLink') { var href = selectedMenuItem.href; - var chrom = $("input[name=chromName]").val(); - if(chrom && href.indexOf("c=" + chrom) == -1) { - // make sure the link contains chrom info (necessary b/c we are stripping hgsid) - href = href + "&c=" + chrom; - } if(cmd == 'followLink') { // XXXX This is blocked by Safari's popup blocker (without any warning message). location.assign(href); } else { + var chrom = $("input[name=chromName]").val(); + if(chrom && id != "wikiTrack" && href.indexOf("c=" + chrom) == -1) { + // make sure the link contains chrom info (necessary b/c we are stripping hgsid); but don't add chrom + // to wikiTrack links (see redmine #2476). + href = href + "&c=" + chrom; + } // Remove hgsid to force a new session (see redmine ticket 1333). href = removeHgsid(href); if(window.open(href) == null) { windowOpenFailedMsg(); } } } else if (cmd == 'float') { - var id = selectedMenuItem.id; if(floatingMenuItem && floatingMenuItem == id) { $.floatMgr.FOArray = new Array(); floatingMenuItem = null; } else { if(floatingMenuItem) { // This doesn't work. $('#img_data_' + floatingMenuItem).parent().restartFloat(); // This does work $.floatMgr.FOArray = new Array(); } floatingMenuItem = id; reloadFloatingItem(); updateTrackImg(id, "hgt.transparentImage=0", ""); } } else { // if( cmd in 'hide','dense','squish','pack','full','show' ) // Change visibility settings: // // First change the select on our form: - var id = selectedMenuItem.id; var rec = trackDbJson[id]; var selectUpdated = updateVisibility(id, cmd); // Now change the track image if(imageV2 && 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(); @@ -1777,65 +1774,66 @@ str = selectedImg + " " + visibilityStrs[i]; } } else if(visibilityStrs[i] == visibilityStrsOrder[rec.visibility]) { str = selectedImg + " " + visibilityStrs[i]; } o[str] = {onclick: makeContextMenuHitCallback(visibilityStrs[i])}; menu.push(o); } } done = true; } } if(done) { var o = new Object(); var any = false; - if(isGene || isHgc) { var title = selectedMenuItem.title || "feature"; + if(isGene || isHgc || id == "wikiTrack") { + // Add "Open details..." item var displayItemFunctions = false; if(rec) { - if(rec.type.indexOf("wig") == 0 || rec.type.indexOf("bigWig") == 0) { + if(rec.type.indexOf("wig") == 0 || rec.type.indexOf("bigWig") == 0 || id == "wikiTrack") { displayItemFunctions = false; } else if(rec.type.indexOf("expRatio") == 0) { displayItemFunctions = title != "zoomInMore"; } else { displayItemFunctions = true; } } if(displayItemFunctions) { o[makeImgTag("magnify.png") + " Zoom to " + title] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "selectWholeGene"); return true; }}; o[makeImgTag("dnaIcon.png") + " Get DNA for " + title] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "getDna"); return true; }}; } o[makeImgTag("bookOut.png") + " Open details page in new window..."] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "openLink"); return true; }}; any = true; } - if(selectedMenuItem.title != undefined && selectedMenuItem.title.length > 0 - && selectedMenuItem.href != undefined && selectedMenuItem.href.length > 0) { - var str = selectedMenuItem.title; - if(str.indexOf("Click to alter ") == 0) { + if(href != undefined && href.length > 0) { + // Add "Show details..." item + if(title.indexOf("Click to alter ") == 0) { ; // suppress the "Click to alter..." items } else if(selectedMenuItem.href.indexOf("cgi-bin/hgTracks") != -1) { ; // suppress menu items for hgTracks links (e.g. Next/Prev map items). } else { - if(str.indexOf("display density") != -1) - str = makeImgTag("toggle.png") + str; - else if(str == "zoomInMore") + var item; + if(title.indexOf("display density") != -1) + item = makeImgTag("toggle.png") + title; + else if(title == "zoomInMore") // avoid showing menu item that says "Show details for zoomInMore..." (redmine 2447) - str = makeImgTag("toggle.png") + " Show details..."; + item = makeImgTag("toggle.png") + " Show details..."; else - str = makeImgTag("book.png") + " Show details for " + str + "..."; - o[str] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "followLink"); return true; }}; + item = makeImgTag("book.png") + " Show details for " + title + "..."; + o[item] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "followLink"); return true; }}; any = true; } } if(any) { menu.push($.contextMenu.separator); menu.push(o); } } } if(!done) { if(false) { // Currently toggling b/n drag-and-zoom mode and hilite mode is disabled b/c we don't know how to keep hilite mode from disabling the // context menus. var o = new Object(); var str = "drag-and-zoom mode";