94041c12e043016875ebd340568bda0ccaf122f6 lrnassar Wed Jul 8 13:53:22 2026 -0700 Add db= to cross-CGI hgTracks/hgTrackUi/hgc links to prevent wrong-assembly errors. refs #37840 Completes the incomplete work from #26892: links from the browser to a different CGI omitted db=, so the target CGI fell back to the cart's db (often wrong), producing "Can't find in track database " errors and broken shared links. Adds the current-assembly db to link builders across hgTracks (chromGraphTrack, expRatioTracks, config ruler and per-track configure links, variation), hgVai, hgFileUi, hgGtexTrackSettings, hgBlat, hgGene, hgNear, the barChart/GTEx faceted UI (facetedBar, barChartUi, gtexUi), and the hgTrackUi group-configure link. diff --git src/hg/lib/barChartUi.c src/hg/lib/barChartUi.c index d5899209c6c..0347f738c8b 100644 --- src/hg/lib/barChartUi.c +++ src/hg/lib/barChartUi.c @@ -445,44 +445,44 @@ void barChartFacetedUi(char *database, struct cart *cart, struct trackDb *tdb, char *track, char *title, boolean boxed) /* Bar chart track type that has an associated facets tables */ { puts("
"); barChartUiLogTransform(cart, track, tdb); puts("  "); barChartUiViewLimits(cart, track, tdb); if (isPopup) { char *categoryLabel = trackDbSettingClosestToHomeOrDefault(tdb, BAR_CHART_CATEGORY_LABEL, BAR_CHART_CATEGORY_LABEL_DEFAULT); printf("
%s:\n", categoryLabel); - printf("", - hTrackUiForTrack(track), track); + printf("", + hTrackUiForTrack(track), database, track); } else { char *facets = trackDbSetting(tdb, "barChartFacets"); char *statsFile = hReplaceGbdb(trackDbRequiredSetting(tdb, "barChartStatsUrl")); /* Write html to make white background */ hInsideStyleToWhite(); /* Set up url that has enough context to get back to us. */ struct dyString *returnUrl = dyStringNew(0); - dyStringPrintf(returnUrl, "../cgi-bin/hgTrackUi?g=%s", track); + dyStringPrintf(returnUrl, "../cgi-bin/hgTrackUi?db=%s&g=%s", database, track); dyStringPrintf(returnUrl, "&%s", cartSidUrlString(cart)); /* Load up table from tsv file */ char *requiredStatsFields[] = {"count",}; struct fieldedTable *table = fieldedTableFromTabFile(statsFile, statsFile, requiredStatsFields, ArraySize(requiredStatsFields)); /* Update facet selections from users input if any and get selected part of table */ struct facetedTable *facTab = facetedTableFromTable(table, tdb->track, facets); facTab->mergeFacetsOk = trackDbSettingOn(tdb, "barChartMerge"); facetedTableUpdateOnClick(facTab, cart); struct facetField **selectedFf = NULL; struct fieldedTable *selected = facetedTableSelect(facTab, cart, &selectedFf); /* Add wrapper function(s) */