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"))