42e858d2e24ec0a9ad1c352c5fc27eaecb6bddda
tdreszer
  Mon Jun 6 13:39:07 2011 -0700
individual track visibility options are confusing when rightClicking the sideButton and the sideButton is for more than one track.  They are being removed.
diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js
index 86d931c..23f1f68 100644
--- src/hg/js/hgTracks.js
+++ src/hg/js/hgTracks.js
@@ -1899,65 +1899,73 @@
             var menu = [];
             var selectedImg = makeImgTag("greenChecksm.png");
             var blankImg    = makeImgTag("invisible16.png");
             var done = false;
             if(selectedMenuItem && selectedMenuItem.id != null) {
                 var href = selectedMenuItem.href;
                 var isHgc, isGene;
                 if(href) {
                     isGene = href.match("hgGene");
                     isHgc = href.match("hgc");
                 }
                 var id = selectedMenuItem.id;
                 var rec = trackDbJson[id];
                 var offerHideSubset    = false;
                 var offerHideComposite = false;
+                var offerSingles       = true;
                 var row = $( 'tr#tr_' + id );
                 if (row) {
                     var btn = $(row).find('p.btnBlue');  // btnBlue means cursor over left button
                     if (btn.length == 1) {
                         var compositeSet = imgTblCompositeSet(row);
                         if (compositeSet && compositeSet.length > 0) {  // There is a composite set
                             offerHideComposite = true;
                             $( compositeSet ).find('p.btn').addClass('blueButtons');  // blue persists
 
                             var subSet = imgTblContiguousRowSet(row);
-                            if (subSet && subSet.length > 1 && subSet.length < compositeSet.length) {
+                            if (subSet && subSet.length > 1) {
+                                offerSingles = false;
+                                if(subSet.length < compositeSet.length) {
                                 offerHideSubset = true;
                                 $( subSet ).addClass("greenRows"); // green persists
                             }
                         }
                     }
                 }
+                }
 
-                // First option is hide whole set
+                // First option is hide sets
                 if (offerHideComposite) {
                     if (offerHideSubset) {
                         var o = new Object();
                         o[blankImg + " hide track subset (green)"] = {onclick: makeContextMenuHitCallback('hideSet')};
                         menu.push(o);
                     }
 
                     var o = new Object();
                     var str = blankImg + " hide track set";
                     if (offerHideSubset)
                         str += " (blue)";
                     o[str] = {onclick: makeContextMenuHitCallback('hideComposite')};
                     menu.push(o);
-                    menu.push($.contextMenu.separator);
                 }
 
+                // Second set of options: visibility for single track
+                if (offerSingles) {
+                    if (offerHideComposite)
+                        menu.push($.contextMenu.separator);
+
                 // XXXX what if select is not available (b/c trackControlsOnMain is off)?
                 // Move functionality to a hidden variable?
                 var select = $("select[name=" + id + "]");
                 if (select.length > 1)  // Not really needed if $('#hgTrackUiDialog').html(""); has worked
                     select =  [ $(select)[0] ];
                 var cur = $(select).val();
                 if(cur) {
                     $(select).children().each(function(index, o) {
                                                var title = $(this).val();
                                                var str = blankImg + " " + title;
                                                if(title == cur)
                                                    str = selectedImg + " " + title;
                                                var o = new Object();
                                                o[str] = {onclick: function (menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, title); return true;}};
                                                menu.push(o);
@@ -1974,30 +1982,32 @@
                             if(rec.canPack || (visibilityStrs[i] != "pack" && visibilityStrs[i] != "squish")) {
                                 if(rec.localVisibility) {
                                     if(visibilityStrs[i] == rec.localVisibility) {
                                         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;
                         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 || id == "wikiTrack") {
                                 displayItemFunctions = false;
                             } else if(rec.type.indexOf("expRatio") == 0) {
                                 displayItemFunctions = title != "zoomInMore";
                             } else {
                                 displayItemFunctions = true;
                             }