4b7650a3500f39cd9f58256d661f1f942372364c chmalee Mon Dec 11 14:40:26 2023 -0800 Fix hgSearch redirect links when search results in a all_mrna track singlePos, refs Max email diff --git src/hg/hgSearch/hgSearch.c src/hg/hgSearch/hgSearch.c index 5e5a35d..ac7565c 100644 --- src/hg/hgSearch/hgSearch.c +++ src/hg/hgSearch/hgSearch.c @@ -615,40 +615,41 @@ // we can just go directly there. But if we aren't a singlePos, we need to show // the results page boolean doRedirect = TRUE; measureTiming = cartUsualBoolean(cart, "measureTiming", FALSE); struct hgPositions *hgp = doQuery(cj->jw, db, allCategories, doRedirect, userSearch, measureTiming); // Since we are coming from another CGI or a URL manip, go directly to hgTracks // if we resolve to a single position if (cartJsonIsNoWarns() && hgp && hgp->singlePos) { char newPosBuf[128]; safef(newPosBuf, sizeof(newPosBuf), "%s:%d-%d", hgp->singlePos->chrom, hgp->singlePos->chromStart+1, hgp->singlePos->chromEnd); cartSetString(cj->cart, "position", newPosBuf); if (hgp->singlePos->highlight) cartSetString(cj->cart, "addHighlight", hgp->singlePos->highlight); char *trackName = cloneString(hgp->tableList->name); - trackHubFixName(trackName); struct trackDb *track = NULL; if (!sameString(trackName, "chromInfo")) { track = tdbForTrack(db, trackName, &hgFindTdbList); if (!track && startsWith("all_", trackName)) track = tdbForTrack(db, trackName+strlen("all_"), &hgFindTdbList); if (!track) errAbort("no track for table \"%s\" found via a findSpec", trackName); } + trackName = cloneString(track->track); + trackHubFixName(trackName); puts("Content-type:text/html\n"); puts("<HTML>\n<HEAD>\n"); printf("<script>window.location.href=\"../cgi-bin/hgTracks?"); printf("db=%s", db); printf("&position=%s", newPosBuf); if (!sameString(trackName, "chromInfo")) printf("&%s=pack", trackName); printf("&hgFind.matches=%s", hgp->singlePos->name); if (track && track->parent) { if (tdbIsSuperTrackChild(track)) printf("&%s=show", track->parent->track); else { // tdb is a subtrack of a composite or a view