ce138738e24cb6e84502440b79490c412f6786f8 max Tue Jan 27 03:13:16 2026 -0800 Reapply "changing superTrack TrackUi quite a bit. This reverts commit e6ee88658405177aee46ddb8902ae93aee5b1378. diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 5cd03f48647..3bd55fa970a 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -887,98 +887,111 @@ "dense", "squish", "pack", "full", }; static int packIx[] = {tvHide,tvDense,tvSquish,tvPack,tvFull}; if (canPack) cgiMakeDropListClassWithIdStyleAndJavascript(varName, id, pack, ArraySize(pack), pack[packIx[vis]], class, TV_DROPDOWN_STYLE, events); else cgiMakeDropListClassWithIdStyleAndJavascript(varName, id, noPack, ArraySize(noPack), noPack[vis], class, TV_DROPDOWN_STYLE, events); } -void hTvDropDownClassVisOnlyAndExtra(char *varName, enum trackVisibility vis, - boolean canPack, char *class, char *visOnly, struct slPair *events) -// Make track visibility drop down for varName with style class, and potentially limited to visOnly -{ static char *denseOnly[] = { "hide", "dense", + NULL }; static char *squishOnly[] = { "hide", "squish", + NULL }; static char *packOnly[] = { "hide", "pack", + NULL }; static char *fullOnly[] = { "hide", "full", + NULL }; static char *noPack[] = { "hide", "dense", "full", + NULL }; static char *pack[] = { "hide", "dense", "squish", "pack", "full", + NULL }; -static int packIx[] = {tvHide,tvDense,tvSquish,tvPack,tvFull}; + +char ** hTvGetVizArr(enum trackVisibility vis, boolean canPack, char* visOnly) +/* return a NULL-terminated array of char* with possible track visibilities */ +{ if (visOnly != NULL) { - int visIx = (vis > 0) ? 1 : 0; if (sameWord(visOnly,"dense")) - cgiMakeDropListClassWithStyleAndJavascript(varName, denseOnly, ArraySize(denseOnly), - denseOnly[visIx],class,TV_DROPDOWN_STYLE, events); + return denseOnly; else if (sameWord(visOnly,"squish")) - cgiMakeDropListClassWithStyleAndJavascript(varName, squishOnly, - ArraySize(squishOnly), squishOnly[visIx], - class, TV_DROPDOWN_STYLE, events); + return squishOnly; else if (sameWord(visOnly,"pack")) - cgiMakeDropListClassWithStyleAndJavascript(varName, packOnly, ArraySize(packOnly), - packOnly[visIx], class, TV_DROPDOWN_STYLE, events); + return packOnly; else if (sameWord(visOnly,"full")) - cgiMakeDropListClassWithStyleAndJavascript(varName, fullOnly, ArraySize(fullOnly), - fullOnly[visIx], class, TV_DROPDOWN_STYLE, events); + return fullOnly; else /* default when not recognized */ - cgiMakeDropListClassWithStyleAndJavascript(varName, denseOnly, ArraySize(denseOnly), - denseOnly[visIx], class, TV_DROPDOWN_STYLE, events); + return denseOnly; } else { if (canPack) - cgiMakeDropListClassWithStyleAndJavascript(varName, pack, ArraySize(pack), - pack[packIx[vis]], class, TV_DROPDOWN_STYLE, events); + return pack; else - cgiMakeDropListClassWithStyleAndJavascript(varName, noPack, ArraySize(noPack), - noPack[vis], class, TV_DROPDOWN_STYLE, events); + return noPack; + } } + +void hTvDropDownClassVisOnlyAndExtra(char *varName, enum trackVisibility vis, + boolean canPack, char *class, char *visOnly, struct slPair *events) +// Make track visibility drop down for varName with style class, and potentially limited to visOnly +{ +char** vizArr = hTvGetVizArr(vis, canPack, visOnly); +int visIx = (vis > 0) ? 1 : 0; +char* checked = vizArr[visIx]; + +static int packIx[] = {tvHide,tvDense,tvSquish,tvPack,tvFull}; +if (visOnly && canPack) + checked = vizArr[packIx[vis]]; + +int vizArrLen = arrNullLen(vizArr); + +cgiMakeDropListClassWithStyleAndJavascript(varName, vizArr, vizArrLen, checked, class,TV_DROPDOWN_STYLE, events); } void hideShowDropDownWithClassAndExtra(char *varName, char * id, boolean show, char *class, struct slPair *events) // Make hide/show dropdown for varName { static char *hideShow[] = { "hide", "show" }; cgiMakeDropListClassWithIdStyleAndJavascript(varName, id, hideShow, ArraySize(hideShow), hideShow[show], class, TV_DROPDOWN_STYLE, events); } @@ -10527,31 +10540,31 @@ { char *version = checkDataVersion(database, tdb); if (version == NULL) { // try the hgFixed.trackVersion table struct trackVersion *trackVersion = getTrackVersion(database, tdb->track); // try trackVersion table with parent, for composites/superTracks if (trackVersion == NULL && tdb->parent != NULL) trackVersion = getTrackVersion(database, tdb->parent->track); if (trackVersion != NULL) version = trackVersion->version; } if (isNotEmpty(version)) - printf("<B>Source data version:</B> %s <BR>\n", version); + printf("<B>Version:</B> %s <BR>\n", version); } void printRelatedTracks(char *database, struct hash *trackHash, struct trackDb *tdb, struct cart *cart) /* Maybe print a "related track" section */ { if (trackHubDatabase(database)) return; char *relatedTrackTable = cfgOptionDefault("db.relatedTrack","relatedTrack"); struct sqlConnection *conn = hAllocConn(database); if (!sqlTableExists(conn, relatedTrackTable)) { hFreeConn(&conn); return; }