93504f18ac014caf2aa30b03c8d6c710fecbd2d2
chmalee
  Tue Feb 13 17:55:26 2024 -0800
When a hub composite track is selected in the table browser, show the shortlabel of the subtracks in the table dropdown in addition to the subtrack name, since the track name may not be informative, as in the case of the ENCODE DNA track hub, refs 33000

diff --git src/hg/hgTables/mainPage.c src/hg/hgTables/mainPage.c
index 12e1a4e..96e0077 100644
--- src/hg/hgTables/mainPage.c
+++ src/hg/hgTables/mainPage.c
@@ -301,32 +301,47 @@
 
 /* Get currently selected table.  If it isn't in our list
  * then revert to first in list. */
 selTable = cartUsualString(cart, varName, nameList->name);
 if (!slNameInListUseCase(nameList, selTable))
     selTable = nameList->name;
 
 /* Print out label and drop-down list. */
 hPrintf("<B>table: </B>");
 hPrintf("<SELECT NAME=\"%s\" id='%s'>\n", varName, varName);
 jsOnEventById("change", varName, onChangeTable());
 struct trackDb *selTdb = NULL;
 for (name = nameList; name != NULL; name = name->next)
     {
     struct trackDb *tdb = NULL;
+    if (curTrack != NULL && isHubTrack(curTrack->track))
+        {
+        if (sameString(curTrack->track, name->name))
+            tdb = curTrack;
+        else if (curTrack->subtracks != NULL)
+            {
+            // maybe a subtrack is what we're looking for
+            struct trackDb *sub = subTdbFind(curTrack, name->name);
+            if (sub)
+                tdb = sub;
+            }
+        }
+    else
+        {
         if (track != NULL)
             tdb = findTdbForTable(database,track,name->name, ctLookupName);
+        }
     hPrintf("<OPTION VALUE=\"%s\"", name->name);
     // Disable options for related tables that are noGenome -- if a non-positional table
     // is selected then we output its entire contents.
     if (cartTrackDbIsNoGenome(database, name->name) && fullGenomeRegion() &&
         (track == NULL || differentString(track->table, name->name)))
         hPrintf(" DISABLED"NO_GENOME_CLASS);
     else if (sameString(selTable, name->name))
         {
         hPrintf(" SELECTED");
         selTdb = tdb;
         }
     if (tdb != NULL)
 	if ((curTrack == NULL) || differentWord(tdb->shortLabel, curTrack->shortLabel))
 	    hPrintf(">%s (%s)", tdb->shortLabel, name->name);
 	else