5199438a1019eff8b60a3f9bc404b6494ed800c2 braney Tue May 9 07:41:33 2017 -0700 Add menus to do sorting on custom composites. diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js index 90abac5..fc40da8 100644 --- src/hg/js/hgTracks.js +++ src/hg/js/hgTracks.js @@ -2672,30 +2672,46 @@ url = "hgTrackUi?hgsid=" + getHgsid() + "&g="; rec = hgTracks.trackDb[id]; if (tdbHasParent(rec) && tdbIsLeaf(rec)) url += rec.parentTrack; else { // The button already has the ref var link = normed($( 'td#td_btn_'+ rightClick.selectedMenuItem.id ).children('a')); if (link) url = $(link).attr('href'); else url += rightClick.selectedMenuItem.id; } location.assign(url); + } else if ((cmd === 'sortExp') || (cmd === 'sortSim')) { + + url = "hgTracks?hgsid=" + getHgsid() + "&" + cmd + "="; + rec = hgTracks.trackDb[id]; + if (tdbHasParent(rec) && tdbIsLeaf(rec)) + url += rec.parentTrack; + else { + // The button already has the ref + var link2 = normed($( 'td#td_btn_'+ rightClick.selectedMenuItem.id ).children('a')); + if (link2) + url = $(link2).attr('href'); + else + url += rightClick.selectedMenuItem.id; + } + location.assign(url); + } else if (cmd === 'viewImg') { // Fetch a new copy of track img and show it to the user in another window. This code // assume we have updated remote cart with all relevant chages (e.g. drag-reorder). jQuery('body').css('cursor', 'wait'); $.ajax({ type: "GET", url: "../cgi-bin/hgTracks", data: cart.varsToUrlData({ 'hgt.imageV1': '1','hgt.trackImgOnly': '1', 'hgsid': getHgsid() }), dataType: "html", trueSuccess: rightClick.handleViewImg, success: catchErrorOrDispatch, error: errorHandler, cmd: cmd, cache: false @@ -3184,30 +3200,53 @@ // Jumps to highlight when not currently seen in image var text = (currentlySeen ? " Zoom" : " Jump") + " to highlight"; o[rightClick.makeImgTag("highlightZoom.png") + text] = { onclick: rightClick.makeHitCallback('jumpToHighlight') }; if ( currentlySeen ) { // Remove only when seen o[rightClick.makeImgTag("highlightRemove.png") + " Remove highlight"] = { onclick: rightClick.makeHitCallback('removeHighlight') }; } menu.push(o); } } + + // add sort options if this is a custom composite + if (rec.isCustomComposite) { + + o = {}; + o[" Sort by Expression "] = { + onclick: function(menuItemClicked, menuObject) { + rightClick.hit(menuItemClicked, menuObject, "sortExp"); + return true; } + }; + menu.push(o); + + o = {}; + o[" Sort by Similarity "] = { + onclick: function(menuItemClicked, menuObject) { + rightClick.hit(menuItemClicked, menuObject, "sortSim"); + return true; } + }; + menu.push(o); + + menu.push($.contextMenu.separator); + } + // Add view image at end o = {}; o[rightClick.makeImgTag("eye.png") + " View image"] = { onclick: function(menuItemClicked, menuObject) { rightClick.hit(menuItemClicked, menuObject, "viewImg"); return true; } }; menu.push(o); return menu; }, { beforeShow: function(e) { // console.log(mapItems[rightClick.selectedMenuItem]); rightClick.selectedMenuItem = rightClick.findMapItem(e);