bdd82165484a4faf7397933a9db170ede3b3ed0c
braney
Wed Feb 7 14:56:09 2018 -0800
fixing bugs in hgCollection
diff --git src/hg/hgCollection/hgCollection.c src/hg/hgCollection/hgCollection.c
index 4e5a192..b4c5c38 100644
--- src/hg/hgCollection/hgCollection.c
+++ src/hg/hgCollection/hgCollection.c
@@ -139,32 +139,32 @@
{
struct trackDb *subTdb;
jsInlineF("
");
for(subTdb = tdb->subtracks; subTdb; subTdb = subTdb->next)
printGroup(trackHubSkipHubName(tdb->track), subTdb, user && (subTdb->subtracks != NULL), user);
jsInlineF("
");
}
jsInlineF("");
}
static void outHubHeader(FILE *f, char *db)
// output a track hub header
{
fprintf(f,"hub hub1\n\
-shortLabel User Composite\n\
-longLabel User Composite\n\
+shortLabel Track Collections\n\
+longLabel Track Collections\n\
useOneFile on\n\
email genome-www@soe.ucsc.edu\n\n");
fprintf(f,"genome %s\n\n", db);
}
static char *getHubName(struct cart *cart, char *db)
// get the name of the hub to use for user collections
{
struct tempName hubTn;
char buffer[4096];
safef(buffer, sizeof buffer, "%s-%s", customCompositeCartName, db);
char *hubName = cartOptionalString(cart, buffer);
if (hubName == NULL)
@@ -391,30 +391,31 @@
" \n");
}
static void doMainPage(struct cart *cart, char *db, struct grp *groupList, struct trackDb *trackList)
/* Print out initial HTML of control page. */
{
webStartGbNoBanner(cart, db, "Collections");
webIncludeResourceFile("gb.css");
webIncludeResourceFile("spectrum.min.css");
webIncludeResourceFile("hgGtexTrackSettings.css");
jsReloadOnBackButton(cart);
webIncludeFile("inc/hgCollection.html");
char *assembly = stringBetween("(", ")", hFreezeFromDb(db));
+if (assembly != NULL)
jsInlineF("$('#assembly').text('%s');\n",assembly);
printHelp();
doTable(cart, db, groupList, trackList);
puts("");
puts("");
puts("");
puts("");
puts("\n");
jsIncludeFile("utils.js", NULL);
jsIncludeFile("ajax.js", NULL);
jsIncludeFile("spectrum.min.js", NULL);
jsIncludeFile("hgCollection.js", NULL);
webEndGb();
@@ -468,30 +469,32 @@
return dy;
}
static void outTdb(struct sqlConnection *conn, char *db, FILE *f, char *name, struct trackDb *tdb, char *parent, char *visibility, unsigned int color, struct track *track, struct hash *nameHash, struct hash *collectionNameHash, int numTabs, int priority)
// out the trackDb for one track
{
char *dataUrl = NULL;
char *bigDataUrl = trackDbSetting(tdb, "bigDataUrl");
if (bigDataUrl == NULL)
{
if (startsWith("bigWig", tdb->type))
{
+ if (conn == NULL)
+ errAbort("track hub has bigWig without bigDataUrl");
dataUrl = getSqlBigWig(conn, db, tdb);
hashReplace(tdb->settingsHash, "bigDataUrl", dataUrl);
}
}
char *tdbType = trackDbSetting(tdb, "tdbType");
if (tdbType != NULL)
hashReplace(tdb->settingsHash, "type", tdbType);
hashReplace(tdb->settingsHash, "parent", parent);
hashReplace(tdb->settingsHash, "shortLabel", track->shortLabel);
hashReplace(tdb->settingsHash, "longLabel", track->longLabel);
hashReplace(tdb->settingsHash, "track", makeUnique(collectionNameHash, name));
char priBuf[128];
safef(priBuf, sizeof priBuf, "%d", priority);
@@ -579,31 +582,33 @@
}
static void updateHub(struct cart *cart, char *db, struct track *collectionList, struct hash *nameHash)
// save our state to the track hub
{
char *filename = getHubName(cart, db);
char *hubName = hubNameFromUrl(filename);
FILE *f = mustOpen(filename, "w");
chmod(filename, 0666);
struct hash *collectionNameHash = newHash(6);
outHubHeader(f, db);
struct track *collection;
-struct sqlConnection *conn = hAllocConn(db);
+struct sqlConnection *conn = NULL;
+if (!trackHubDatabase(db))
+ conn = hAllocConn(db);
int priority = 1;
for(collection = collectionList; collection; collection = collection->next)
{
if (collection->trackList == NULL) // don't output composites without children
continue;
outComposite(f, collection, priority++);
struct trackDb *tdb;
struct track *track;
for (track = collection->trackList; track; track = track->next)
{
if (track->viewFunc != NULL)
{
priority = outView(f, conn, db, track, collection->name, nameHash, collectionNameHash, priority, hubName);
}
else