\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);
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 slRef *child = track->tdb->children;
for (; child != NULL; child=child->next)
{
struct trackDb *childTdb = child->val;
struct track *childTrack = hashFindVal(trackHash, childTdb->track);
-#ifdef DOWNLOADS_ONLY_TRACKS_INCLUDED
// Try adding downloadsOnly track
if (childTrack == NULL && tdbIsDownloadsOnly(childTdb))
{
AllocVar(childTrack); // Fake a track!
childTrack->tdb = childTdb;
childTrack->hasUi = FALSE;
}
-#endif///def DOWNLOADS_ONLY_TRACKS_INCLUDED
if (childTrack != NULL)
{
AllocVar(ref);
ref->track = childTrack;
slAddTail(&refList, ref);
}
}
}
}
group->trackList = refList;
}
/* Loop through this group and display */
int rowCount=1;
for (tr = group->trackList; tr != NULL; tr = tr->next)
@@ -266,92 +199,63 @@
tdb->parent ? tdb->parent->shortLabel : tdb->shortLabel,
hgTrackUiName(),cartSessionVarName(), cartSessionId(cart), track->track);
hPrintf(" %s", tdb->shortLabel);
if (tdbIsSuper(tdb))
hPrintf("...");
if (track->hasUi)
hPrintf("");
hPrintf("");
hPrintf("
");
if (tdbIsSuperTrackChild(tdb))
/* indent members of a supertrack */
hPrintf(" ");
/* If track is not on this chrom print an informational
message for the user. */
-#ifdef DOWNLOADS_ONLY_TRACKS_INCLUDED
if (tdbIsDownloadsOnly(tdb))
hPrintf("Downloads", // No vis display for downloadsOnly
hgFileUiName(),cartSessionVarName(), cartSessionId(cart), tdb->track);
else
-#endif///def DOWNLOADS_ONLY_TRACKS_INCLUDED
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,
rTdbTreeCanPack(track->tdb), (track->visibility == tvHide) ?
"hiddenText" : "normalText",
trackDbSetting(track->tdb, "onlyVisibility"));
}
}
else
hPrintf("[No data-%s]", chromName);
hPrintf("
");
hPrintf("
");
hPrintf("%s", tdb->longLabel);
hPrintf("
");
-#ifdef PRIORITY_CHANGES_IN_CONFIG_UI
- if (withPriorityOverride)
- {
- hPrintf("
");
-#ifdef DOWNLOADS_ONLY_TRACKS_INCLUDED
- if (tdbIsDownloadsOnly(tdb))
- hPrintf(" 
\n");
- /* suppress group pull-down for supertrack members */
- if (tdbIsSuperTrackChild(track->tdb))
- hPrintf(" ");
- else
- {
- safef(gname, sizeof(gname), "%s.group",track->track);
- printGroupListHtml(gname, groupList, track->groupName);
- }
- }
- hPrintf("
");
- }
-#endif///def PRIORITY_CHANGES_IN_CONFIG_UI
hPrintf("\n");
}
hPrintf("\n");
cgiDown(0.9);
}
}
-#ifdef DOWNLOADS_ONLY_TRACKS_INCLUDED
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)
{
if (!tdbIsDownloadsOnly(tdb)
|| tdbIsFolderContent(tdb)
|| tdbIsCompositeChild(tdb))
continue;
@@ -386,57 +290,53 @@
slSort(pTrackList, tgCmpPriority);
for (track = *pTrackList; track != NULL; track = track->next)
{
struct trackRef *tr;
AllocVar(tr);
tr->track = track;
slAddHead(&track->group->trackList, tr);
}
/* Straighten things out, clean up, and go home. */
for (group = *pGroupList;group != NULL; group = group->next)
slReverse(&group->trackList);
}
return count;
}
-#endif///def DOWNLOADS_ONLY_TRACKS_INCLUDED
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);
if (trackHash == NULL)
trackHash = makeGlobalTrackHash(trackList);
parentChildCartCleanup(trackList,cart,oldVars); // Subtrack settings must be removed when composite/view settings are updated
-
-#ifdef DOWNLOADS_ONLY_TRACKS_INCLUDED
addDownloadOnlyTracks(database,&groupList,&trackList);
-#endif///def DOWNLOADS_ONLY_TRACKS_INCLUDED
/* 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);
@@ -512,40 +412,30 @@
hPrintf("Show track controls under main graphic");
hPrintf("\n");
hPrintf("