eb7f3d03c7b4bef231f09935913fafeab13db90e
max
  Tue May 6 02:33:27 2025 -0700
show all subtracks button on hgTrackUi, refs #35702

diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index 89e85d84370..f7913dbd143 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -5275,30 +5275,33 @@
 	vocab->description = cloneString(row[1]);
 	if (hasUrl)
 	    vocab->url = cloneString(row[2]);
 	hashAdd(subgroupHash, vocab->term, vocab);
 	}
     sqlFreeResult(&sr);
     hFreeConn(&conn);
     }
 return tableHash;
 }
 
 static void printSubtrackTableBody(struct trackDb *parentTdb, struct slRef *subtrackRefList,
 				struct subtrackConfigSettings *settings, struct cart *cart)
 /* Print list of subtracks */
 {
+printf("<button id='showAllSubtracksButton'>Show all subtracks</button>");
+sInlineF("$('#showAllSubtracksButton').on('click', onClickShowAllSubtracks);");
+
 sortOrder_t *sortOrder = settings->sortOrder;
 boolean useDragAndDrop = settings->useDragAndDrop;
 boolean restrictions = settings->restrictions;
 struct dyString *dyHtml = dyStringNew(SMALLBUF);
 char buffer[SMALLBUF];
 char id[SMALLBUF];
 char *db = cartString(cart, "db");
 
 // The subtracks need to be sorted by priority but only sortable and dragable will have
 // non-default (cart) priorities to sort on
 if (sortOrder != NULL || useDragAndDrop)
     {
     // preserves user's prev sort/drags, ignore returned value about where
     //  priorities come from
     (void) tdbRefSortPrioritiesFromCart(cart, &subtrackRefList);