4a234f089be336a40604bf7002b3811dc3dad308
kent
Mon Aug 9 14:58:47 2010 -0700
Adding a trackHash parameter to a bunch of metadata routines so that they could find the track associated with a table. Fixing clipping bug in hgTracks.c for multiWig labels when in non-overlay mode due to a special case that seems to be obsolete (did fair bit of testing to make sure it's not used.)
diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index 7c449a3..d55d00d 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -47,27 +47,40 @@
#define ENCODE_DCC_DOWNLOADS "encodeDCC"
+struct trackDb *wgEncodeDownloadDirKeeper(char *db, struct trackDb *tdb, struct hash *trackHash)
+/* Look up through self and parents, looking for someone responsible for handling
+ * where the downloads are. */
+{
+if (!sameString(tdb->table, tdb->track))
+ {
+ tdb = hashFindVal(trackHash, tdb->table);
+ if (tdb == NULL)
+ errAbort("Can't find track for table %s in wgEncodeDownloadDirKeeper", tdb->table);
+ }
+return trackDbTopLevelSelfOrParent(tdb);
+}
-static boolean makeNamedDownloadsLink(char *database, struct trackDb *tdb,char *name)
+static boolean makeNamedDownloadsLink(char *database, struct trackDb *tdb,char *name,
+ struct hash *trackHash)
// Make a downloads link (if appropriate and then returns TRUE)
{
// Downloads directory if this is ENCODE
if(trackDbSetting(tdb, "wgEncode") != NULL)
{
+ struct trackDb *dirKeeper = wgEncodeDownloadDirKeeper(database, tdb, trackHash);
printf("%s",
hDownloadsServer(),
- trackDbSettingOrDefault(tdb, "origAssembly",database),
- ENCODE_DCC_DOWNLOADS,
- tdb->track,name);
+ trackDbSettingOrDefault(dirKeeper, "origAssembly",database),
+ ENCODE_DCC_DOWNLOADS, dirKeeper->table, name);
return TRUE;
}
return FALSE;
}
-boolean makeDownloadsLink(char *database, struct trackDb *tdb)
+boolean makeDownloadsLink(char *database, struct trackDb *tdb, struct hash *trackHash)
// Make a downloads link (if appropriate and then returns TRUE)
{
-return makeNamedDownloadsLink(database, tdb,"Downloads");
+return makeNamedDownloadsLink(database, tdb,"Downloads", trackHash);
}
#ifdef BIG_UI_NAV_LINKS
@@ -104,7 +117,7 @@
}
boolean compositeMetadataToggle(char *db,struct trackDb *tdb,char *title,
- boolean embeddedInText,boolean showLongLabel)
+ boolean embeddedInText,boolean showLongLabel, struct hash *trackHash)
/* If metadata from metaTbl if it exists, create a link that will allow toggling it's display */
{
const struct mdbObj *safeObj = metadataForTable(db,tdb,NULL);
@@ -129,7 +142,7 @@
&& trackDbSettingClosestToHome(tdb,"wgEncode") != NULL)
{
printf("
%s: | ",mdbVar->var);
- makeNamedDownloadsLink(db, trackDbTopLevelSelfOrParent(tdb), mdbVar->val);
+ makeNamedDownloadsLink(db, tdb, mdbVar->val, trackHash);
printf(" |
");
}
else
@@ -146,14 +159,14 @@
return TRUE;
}
-void extraUiLinks(char *db,struct trackDb *tdb)
+void extraUiLinks(char *db,struct trackDb *tdb, struct hash *trackHash)
/* Show downlaods, schema and metadata links where appropriate */
{
boolean schemaLink = (isCustomTrack(tdb->table) == FALSE)
&& (hTableOrSplitExists(db, tdb->table));
boolean metadataLink = (!tdbIsComposite(tdb)
&& metadataForTable(db, tdb, NULL) != NULL);
-boolean downloadLink = (trackDbSetting(tdb, "wgEncode") != NULL);
+boolean downloadLink = (trackDbSetting(tdb, "wgEncode") != NULL && !tdbIsSuperTrack(tdb));
boolean moreThanOne = (schemaLink && metadataLink)
|| (schemaLink && downloadLink)
|| (downloadLink && metadataLink);
@@ -170,13 +183,12 @@
}
if(downloadLink)
{
- struct trackDb *trueTdb = trackDbTopLevelSelfOrParent(tdb);
- makeNamedDownloadsLink(db, trueTdb,(moreThanOne ? "downloads":"Downloads"));
+ makeNamedDownloadsLink(db, tdb, (moreThanOne ? "downloads":"Downloads"), trackHash);
if(metadataLink)
printf(",");
}
if (metadataLink)
- compositeMetadataToggle(db,tdb,"metadata", TRUE, TRUE);
+ compositeMetadataToggle(db,tdb,"metadata", TRUE, TRUE, trackHash);
if(moreThanOne)
printf("");
@@ -3634,7 +3646,7 @@
}
static void compositeUiSubtracks(char *db, struct cart *cart, struct trackDb *parentTdb,
- boolean selectedOnly, char *primarySubtrack)
+ boolean selectedOnly, char *primarySubtrack, struct hash *trackHash)
/* Display list of subtracks and descriptions with checkboxes to control visibility and possibly other
* nice things including links to schema and metadata and a release date. */
{
@@ -3882,7 +3894,7 @@
printf (" %s", subtrack->longLabel);
if(trackDbSetting(parentTdb, "wgEncode") && trackDbSetting(subtrack, "accession"))
printf (" [GEO:%s]", trackDbSetting(subtrack, "accession"));
- compositeMetadataToggle(db,subtrack,"...",TRUE,FALSE);
+ compositeMetadataToggle(db,subtrack,"...",TRUE,FALSE, trackHash);
printf(" ");
if(cType != cfgNone)
@@ -3931,17 +3943,17 @@
}
static void compositeUiAllSubtracks(char *db, struct cart *cart, struct trackDb *tdb,
- char *primarySubtrack)
+ char *primarySubtrack, struct hash *trackHash)
/* Show checkboxes for all subtracks, not just selected ones. */
{
-compositeUiSubtracks(db, cart, tdb, FALSE, primarySubtrack);
+compositeUiSubtracks(db, cart, tdb, FALSE, primarySubtrack, trackHash);
}
static void compositeUiSelectedSubtracks(char *db, struct cart *cart, struct trackDb *tdb,
- char *primarySubtrack)
+ char *primarySubtrack, struct hash *trackHash)
/* Show checkboxes only for selected subtracks. */
{
-compositeUiSubtracks(db, cart, tdb, TRUE, primarySubtrack);
+compositeUiSubtracks(db, cart, tdb, TRUE, primarySubtrack, trackHash);
}
static void makeAddClearSubmitTweak(char javascript[JBUFSIZE], char *formName,
@@ -6382,7 +6394,7 @@
}
void hCompositeUi(char *db, struct cart *cart, struct trackDb *tdb,
- char *primarySubtrack, char *fakeSubmit, char *formName)
+ char *primarySubtrack, char *fakeSubmit, char *formName, struct hash *trackHash)
/* UI for composite tracks: subtrack selection. If primarySubtrack is
* non-NULL, don't allow it to be cleared and only offer subtracks
* that have the same type. If fakeSubmit is non-NULL, add a hidden
@@ -6406,7 +6418,7 @@
puts("");
if (trackDbCountDescendantLeaves(tdb) < MANY_SUBTRACKS && !hasSubgroups)
{
- compositeUiAllSubtracks(db, cart, tdb, primarySubtrack);
+ compositeUiAllSubtracks(db, cart, tdb, primarySubtrack, trackHash);
return;
}
if (fakeSubmit)
@@ -6442,11 +6454,11 @@
if(displayAll)
{
- compositeUiAllSubtracks(db, cart, tdb, primarySubtrack);
+ compositeUiAllSubtracks(db, cart, tdb, primarySubtrack, trackHash);
}
else
{
- compositeUiSelectedSubtracks(db, cart, tdb, primarySubtrack);
+ compositeUiSelectedSubtracks(db, cart, tdb, primarySubtrack, trackHash);
}
if (primarySubtrack == NULL) // primarySubtrack is set for tableBrowser but not hgTrackUi
|