5aed2d465f12c3b82dbb6ae78b3bf5529fd0a2ba
braney
Mon Apr 20 17:13:12 2026 -0700
hgc/hgTrackUi: populate quickLift source track description when the source assembly is a hub or GenArk. getTrackHtml() had an empty TODO branch for trackHubDatabase(db) || isGenArk(db); wire it up to open the source hub (via the connected hub or genarkUrl), load its trackDb list, find the track by bare name, and call trackHubAddDescription to fill tdb->html. refs #37389
diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index b88a66bed70..cac6a74ed83 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -10201,38 +10201,76 @@
}
else
{
tableName = hTableForTrack(database, tdb->table);
conn = hAllocConnTrack(database, tdb);
}
if (tableName)
{
char *date = firstWordInLine(sqlTableUpdate(conn, tableName));
if (date != NULL)
printf("Data last updated at UCSC: %s
\n", date);
}
hFreeConn(&conn);
}
+static struct trackDb *findTdbByBareName(struct trackDb *tdbList, char *bareName)
+/* Recursively search tdbList (and subtracks) for a tdb whose bare track name matches. */
+{
+struct trackDb *tdb;
+for (tdb = tdbList; tdb != NULL; tdb = tdb->next)
+ {
+ if (sameString(trackHubSkipHubName(tdb->track), bareName))
+ return tdb;
+ struct trackDb *found = findTdbByBareName(tdb->subtracks, bareName);
+ if (found != NULL)
+ return found;
+ }
+return NULL;
+}
+
char *getTrackHtml(char *db, char *trackName)
/* Grab HTML from trackDb in native database for quickLift tracks. */
{
char *html = NULL;
if (trackHubDatabase(db) || isGenArk(db))
{
- // somehow get to the HTML that's not in the quickLift hub, but in the original hub
+ struct trackHub *hub = NULL;
+ struct trackHubGenome *hubGenome = trackHubGetGenome(db);
+ if (hubGenome != NULL)
+ hub = hubGenome->trackHub;
+ else if (isGenArk(db))
+ {
+ char *hubUrl = genarkUrl(db);
+ if (hubUrl != NULL)
+ {
+ hub = trackHubOpen(hubUrl, "");
+ if (hub != NULL)
+ hubGenome = trackHubFindGenome(hub, db);
+ }
+ }
+ if (hubGenome != NULL)
+ {
+ struct trackDb *tdbList = trackHubAddTracksGenome(hubGenome);
+ struct trackDb *tdb = findTdbByBareName(tdbList, trackHubSkipHubName(trackName));
+ if (tdb != NULL)
+ {
+ trackHubAddDescription(hubGenome->trackDbFile, tdb);
+ html = tdb->html;
+ }
+ }
}
else
{
char query[4096];
sqlSafef(query, sizeof query, "tableName = '%s'", trackHubSkipHubName(trackName));
struct trackDb *loadTrackDb(char *db, char *where);
struct trackDb *tdb = loadTrackDb(db, query);
html = tdb->html;
//char *html = tdb->html;
if (isEmpty(tdb->html))
{
char *parent = trackDbSetting(tdb, "parent");
char *words[10];