d5cbd45d0d3db423db2dbad15c653961c0bd29ac hiram Wed Feb 27 13:57:14 2019 -0800 one stop shopping for trackDb now in obtainTdb() function refs #18869 diff --git src/hg/hubApi/hubApi.c src/hg/hubApi/hubApi.c index 77d64ed..55fb6c2 100644 --- src/hg/hubApi/hubApi.c +++ src/hg/hubApi/hubApi.c @@ -172,31 +172,31 @@ // else // hPrintf(" <li>%s: NO children</li>\n", tdb->track); struct hashEl *hel; struct hashCookie hc = hashFirst(tdb->settingsHash); while ((hel = hashNext(&hc)) != NULL) { if (sameWord("track", hel->name)) continue; // already output in header if (isEmpty((char *)hel->val)) hPrintf(" <li>%s : <empty></li>\n", hel->name); else hPrintf(" <li>%s : '%s'</li>\n", hel->name, (char *)hel->val); } if (tdb->subtracks) { - struct trackDb *tdbEl = tdb->subtracks; + struct trackDb *tdbEl = NULL; hPrintf(" <li>has %d subtrack(s)</li>\n", slCount(tdb->subtracks)); for (tdbEl = tdb->subtracks; tdbEl; tdbEl = tdbEl->next) { hPrintf("<li>subtrack: %s of parent: %s : type: '%s'</li>\n", tdbEl->track, tdbEl->parent->track, tdbEl->type); hashCountTrack(tdbEl, countTracks); trackSettings(tdbEl, countTracks); } } hPrintf(" </ul>\n"); } static int bbiBriefMeasure(char *type, char *bigDataUrl, char *bigDataIndex, long *chromCount, long *itemCount, struct dyString *errors) /* check a bigDataUrl to find chrom count and item count */ { int retVal = 0; @@ -379,32 +379,31 @@ totalTracks += ptToInt(hel->val); hashReplace(trackCounter, hel->name, intToPt(prevCount + ptToInt(hel->val))); hPrintf(" <li>%d - %s</li>\n", ptToInt(hel->val), hel->name); } hPrintf(" </ol>\n"); } hPrintf(" </ul>\n"); } else hPrintf(" <li>no trackTopDb</li>\n"); } /* static struct trackDb *hubTrackList() */ static struct trackDb *assemblySettings(struct trackHubGenome *genome) /* display all the assembly 'settingsHash' */ { -struct trackDb *tdb = trackHubTracksForGenome(genome->trackHub, genome); -tdb = trackDbLinkUpGenerations(tdb); +struct trackDb *tdb = obtainTdb(genome, NULL); hPrintf(" <ul>\n"); struct hashEl *hel; struct hashCookie hc = hashFirst(genome->settingsHash); while ((hel = hashNext(&hc)) != NULL) { hPrintf(" <li>%s : %s</li>\n", hel->name, (char *)hel->val); if (sameWord("trackDb", hel->name)) /* examine the trackDb structure */ { hubTrackList(tdb, genome); } if (timeOutReached()) break; } hPrintf(" </ul>\n"); @@ -549,31 +548,31 @@ struct hashEl *hel = hashLookup(apiFunctionHash, words[0]); if (hel == NULL) apiErrAbort("no such command: '%s' for endpoint '/%s'", words[0], pathInfo); void (*apiFunction)(char **) = hel->val; // void (*apiFunction)(char **) = hashMustFindVal(apiFunctionHash, words[0]); (*apiFunction)(words); } /* static void apiFunctionSwitch(char *pathInfo) */ static void tracksForUcscDb(char *db) /* scan the specified database for all tracks */ { struct hash *countTracks = hashNew(0); hPrintf("<p>Tracks in UCSC genome: '%s'<br>\n", db); -struct trackDb *tdbList = hTrackDb(db); +struct trackDb *tdbList = obtainTdb(NULL, db); struct trackDb *tdb; hPrintf("<ul>\n"); for (tdb = tdbList; tdb != NULL; tdb = tdb->next ) { countOneTdb(tdb, NULL, countTracks); if (timeOutReached()) break; } int trackCount = ptToInt(hashFindVal(countTracks, "track count")); hPrintf(" <li>%d total tracks counted, %d different track types</li>\n", trackCount, countTracks->elCount); if (countTracks->elCount) { hPrintf(" <ol>\n"); struct hashEl *hel, *helList = hashElListHash(countTracks); slSort(&helList, hashElCmpIntValDesc);