6a0a4de569da7ed5c63d2781badccdd5249149a1
braney
Thu Nov 24 09:16:29 2022 -0800
gracefully accept trackDbs that have superTrack children in different
groups.
diff --git src/hg/hgTracks/config.c src/hg/hgTracks/config.c
index 4306bc2..583d63f 100644
--- src/hg/hgTracks/config.c
+++ src/hg/hgTracks/config.c
@@ -248,30 +248,31 @@
(groupList != NULL && sameString(groupTarget, groupList->name)))
{
if (changeVis == -1)
rulerMode = tvFull;
else
rulerMode = changeVis;
}
}
#endif /* BOB_DOESNT_LIKE */
jsInit();
cgiMakeHiddenVar(configGroupTarget, "none");
// Now all groups are in a single table, divided by an empty borderless row
hPrintf("
\n");
+struct hash *superHash = hashNew(8);
for (group = groupList; group != NULL; group = group->next)
{
struct trackRef *tr;
if (group->trackList == NULL)
continue;
/* check if group section should be displayed */
char *otherState;
char *indicator;
char *indicatorImg;
boolean isOpen = !isCollapsedGroup(group);
collapseGroupGoodies(isOpen, FALSE, &indicatorImg,
&indicator, &otherState);
hPrintf("");
@@ -332,31 +333,31 @@
hPrintf("");
hPrintf("", hgTrackUiName(),
cartSessionVarName(), cartSessionId(cart),
chromName, RULER_TRACK_NAME);
hPrintf("%s", RULER_TRACK_LABEL);
hPrintf(" | ");
hTvDropDownClass("ruler", rulerMode, FALSE, rulerMode ? "normalText trackVis" : "hiddenText trackVis");
hPrintf(" | ");
hPrintf("Chromosome position in bases. (Clicks here zoom in 3x)");
hPrintf(" |
\n");
}
/* Scan track list to determine which supertracks have visible member
* tracks, and to insert a track in the list for the supertrack.
* Sort tracks and supertracks together by priority */
makeGlobalTrackHash(trackList);
- groupTrackListAddSuper(cart, group);
+ groupTrackListAddSuper(cart, group, superHash);
if (!withPriorityOverride)
{
/* sort hierarchically by priority, considering supertracks */
struct trackRef *refList = NULL, *ref;
for (tr = group->trackList; tr != NULL; tr = tr->next)
{
struct track *track = tr->track;
if (tdbIsSuperTrackChild(track->tdb))
/* ignore supertrack member tracks till supertrack is found */
continue;
AllocVar(ref);
ref->track = track;
slAddTail(&refList, ref);
if (tdbIsSuper(track->tdb))
@@ -434,30 +435,31 @@
rTdbTreeCanPack(track->tdb),
(track->visibility == tvHide) ? "hiddenText trackVis" : "normalText trackVis",
trackDbSetting(track->tdb, "onlyVisibility"));
}
}
else
hPrintf("[No data-%s]", chromName);
hPrintf("");
hPrintf("%s", tdb->longLabel);
hPrintf(" | \n");
}
hPrintf("");
cgiDown(0.9);
hPrintf(" |
\n");
}
+hashFree(&superHash);
hPrintf("
\n");
jsInline("$(document).ready( cfgPageAddListeners )");
}
static int addDownloadOnlyTracks(char *db,struct group **pGroupList,struct track **pTrackList)
// Download only tracks are not normaly incorporated into the grou and track lists
{
int count = 0;
struct track *track = NULL;
struct group *group = NULL;
struct trackDb *tdbList = hTrackDb(db);
struct trackDb *tdb = tdbList;
for (;tdb != NULL; tdb = tdb->next)
{