\n");
}
if (differentString(group->name, "user"))
isFirstNotCtGroup = FALSE;
/* 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 */
groupTrackListAddSuper(cart, group);
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))
{
struct trackRef *tr2;
for (tr2 = group->trackList; tr2 != NULL; tr2 = tr2->next)
{
char *parent = tr2->track->tdb->parentName;
if (parent && sameString(parent, track->track))
{
AllocVar(ref);
ref->track = tr2->track;
slAddTail(&refList, ref);
}
}
}
}
group->trackList = refList;
}
/* Loop through this group and display */
int rowCount=1;
for (tr = group->trackList; tr != NULL; tr = tr->next)
{
struct track *track = tr->track;
struct trackDb *tdb = track->tdb;
hPrintf("
");
if (tdbIsSuperTrackChild(tdb))
/* indent members of a supertrack */
hPrintf(" ");
/* If track is not on this chrom print an informational
message for the user. */
if (hTrackOnChrom(track->tdb, chromName))
{
if (tdbIsSuper(track->tdb))
{
/* supertrack dropdown is hide/show */
superTrackDropDown(cart, track->tdb, 1);
}
else
{
/* check for option of limiting visibility to one mode */
hTvDropDownClassVisOnly(track->track, track->visibility,
track->canPack, (track->visibility == tvHide) ?
"hiddenText" : "normalText",
trackDbSetting(track->tdb, "onlyVisibility"));
}
}
else
hPrintf("[No data-%s]", chromName);
hPrintf("
");
hPrintf("
");
hPrintf("%s", track->longLabel);
hPrintf("
");
#ifdef PRIORITY_CHANGES_IN_CONFIG_UI
if (withPriorityOverride)
{
hPrintf("
\n");
}
hTableEnd();
hPrintf(" ");
}
}
void configPageSetTrackVis(int vis)
/* Do config page after setting track visibility. If vis is -2, then visibility
* is unchanged. If -1 then set visibility to default, otherwise it should
* be tvHide, tvDense, etc. */
{
struct dyString *title = dyStringNew(0);
char *groupTarget = NULL;
struct track *trackList = NULL;
struct track *ideoTrack = NULL;
struct group *groupList = NULL;
withPriorityOverride = cartUsualBoolean(cart, configPriorityOverride, FALSE);
/* Get track list and group them. */
ctList = customTracksParseCart(database, cart, &browserLines, &ctFileName);
trackList = getTrackList(&groupList, vis);
/* The ideogram for some reason is considered a track.
* We don't really want to process it as one though, so
* we see if it's there, and if necessary remove it. */
ideoTrack = chromIdeoTrack(trackList);
if (ideoTrack != NULL)
removeTrackFromGroup(ideoTrack);
/* Fetch group to change on if any from CGI,
* and remove var so it doesn't get used again. */
groupTarget = cloneString(cartUsualString(cart, configGroupTarget, ""));
cartRemove(cart, configGroupTarget);
if (sameString(groupTarget, "none"))
freez(&groupTarget);
dyStringPrintf(title, "Configure Image");
hPrintf("