90b8f880be12956b899d973bc565bffdc9b7ce89
jcasper
  Fri Aug 28 08:27:13 2026 -0700
Moving sort comment on the faceted composite UI, and ading a 'hide subtracks', refs #36320

diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c
index 90dc760923a..b583403b430 100644
--- src/hg/hgTrackUi/hgTrackUi.c
+++ src/hg/hgTrackUi/hgTrackUi.c
@@ -3101,30 +3101,32 @@
 
 struct slPair *dataTypes = parseDataTypes(tdb);
 boolean hasDataTypes = (dataTypes != NULL);
 
 // optional
 const char *colorSettingsUrl = (const char *)hashFindVal(tdb->settingsHash, "colorSettingsUrl");
 const char *maxCheckboxes = (const char *)hashFindVal(tdb->settingsHash, "maxCheckboxes");
 const char *subtrackUrls = trackDbSetting(tdb, "subtrackUrls");
 // --- done parsing values from trackDb.settings ---
 
 const char *metaDataId = tdb->track;
 const int metaDataIdLen = strlen(metaDataId);
 
 printf(pageStyle);       // css
 
+compositeHideEmptySubtracksUi(cart, tdb);
+
 // --- Composite-level filters ---
 // Faceted composites skip hCompositeUi(), so we're doing our own filters setup.
 // The section is named "bedFilters" rather than "filters" because the JS builds
 // its own "#filters" div for the metadata facets.
 if (bedHasFilters(tdb))
     {
     puts("<div class='bedFiltersWrap'>");
     puts("<style>#bedFilters-1 > td > br:first-of-type, "
          "#bedFilters-1 > td > p:empty { display:none; }</style>");
     puts("<table>");  // required by jsBeginCollapsibleSection*, which emits a <TR>
     jsBeginCollapsibleSectionFontSize(cart, tdb->track, "bedFilters", "Data filters",
                                       FALSE, "medium");
     printf("<p class='smallText' style='margin-top:0'>These filters apply to every "
            "subtrack in this container. ");
     printInfoIcon("A filter set on an individual subtrack's own configuration page "