7f7a44a19ff9a54dbaf894365d30e394e802024b
chmalee
Wed Dec 17 12:15:31 2025 -0800
Do not show 'visible tracks' group unless there are more than 32 top level tracks, refs Hiram complaint
diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index dac676cdcd0..13cab3492e6 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -9721,30 +9721,31 @@
"return vis.expandAllGroups(false)");
hPrintf("");
hPrintf("
\n", MAX_CONTROL_COLUMNS - 2);
printShortcutButtons(cart, hasCustomTracks, revCmplDisp, multiRegionButtonTop);
hPrintf(" | \n");
hPrintf("");
hButtonWithOnClick("hgt.expandGroups", "Expand all", "Expand all track groups",
"return vis.expandAllGroups(true)");
hPrintf(" | ");
cg = startControlGrid(MAX_CONTROL_COLUMNS, "left");
struct hash *superHash = hashNew(8);
+ long trackCount = 0;
for (group = groupList; group != NULL; group = group->next)
{
if ((group->trackList == NULL) && (group->errMessage == NULL))
continue;
struct trackRef *tr;
/* check if group section should be displayed */
char *otherState;
char *indicator;
char *indicatorImg;
boolean isOpen = !isCollapsedGroup(group);
collapseGroupGoodies(isOpen, TRUE, &indicatorImg,
&indicator, &otherState);
hPrintf("");
@@ -9904,30 +9905,32 @@
/* Display track controls */
if (group->errMessage)
{
myControlGridStartCell(cg, isOpen, group->name,
shouldBreakAll(group->errMessage));
hPrintf("%s", group->errMessage);
controlGridEndCell(cg);
}
for (tr = group->trackList; tr != NULL; tr = tr->next)
{
struct track *track = tr->track;
if (tdbIsSuperTrackChild(track->tdb))
/* don't display supertrack members */
continue;
+ // only top level tracks contribute to the total count
+ trackCount++;
myControlGridStartCell(cg, isOpen, group->name,
shouldBreakAll(track->shortLabel));
printTrackLink(track);
if (hTrackOnChrom(track->tdb, chromName))
{
if (tdbIsSuper(track->tdb))
superTrackDropDown(cart, track->tdb,
superTrackHasVisibleMembers(track->tdb));
else
{
/* check for option of limiting visibility to one mode */
hTvDropDownClassVisOnly(track->track, track->visibility,
rTdbTreeCanPack(track->tdb),
@@ -9935,30 +9938,41 @@
: "normalText",
trackDbSetting(track->tdb, "onlyVisibility"));
}
}
else
/* If track is not on this chrom print an informational
message for the user. */
hPrintf("[No data-%s]", chromName);
controlGridEndCell(cg);
}
/* now finish out the table */
if (group->next != NULL)
controlGridEndRow(cg);
}
+ if (trackCount < 32)
+ {
+ // visible tracks not needed, set to display: none
+ // we have to do this here because we need to account for super tracks
+ // not being in the list until groupTrackListAddSuper has been called
+ jsInline("let visTrs = document.querySelectorAll(\"[id^=visible-]\");\n"
+ "let prev = visTrs[0].previousSibling;\n"
+ "visTrs.forEach( (v) => v.style.display = \"none\");\n"
+ "prev.style.display = \"none\";\n"
+ );
+ }
hashFree(&superHash);
endControlGrid(&cg);
jsOnEventBySelector(".hgtButtonHideGroup", "click", "onHideAllGroupButtonClick(event)");
}
if (measureTiming)
printTrackTiming();
hPrintf("\n");
}
if (showTrackControls)
hButton("hgt.refresh", "Refresh");
if (sameString(database, "wuhCor1"))