58c24abcdc7e2fe836db993243c6ac15fce457b5 chmalee Wed Mar 4 15:20:15 2026 -0800 Fix more universal species search bugs: hgConvert re-factor meant two hidden form variables were created for the hglft_toDb variable, so remove one of them; make organism comparison case insensitive so 'human' matches 'Human', as genark results are typically lower case; append hubUrl to hgGateway gotohgTracks form so any searched genark hub shows up as a connected hub on hgHubConnect, refs #36535, #36232 diff --git src/hg/hgConvert/hgConvert.c src/hg/hgConvert/hgConvert.c index 44fde6ffc9f..9d3bfd6b5e0 100644 --- src/hg/hgConvert/hgConvert.c +++ src/hg/hgConvert/hgConvert.c @@ -102,31 +102,30 @@ puts("<div class='convertGrid'>\n"); /* SOURCE SECTION (read-only) */ puts("<div class='convertSection'>\n"); puts("<div class='sectionLabel'>Source</div>\n"); hPrintf("<div class='fieldRow'><span class='fieldLabel'>Genome:</span> %s</div>\n", fromDb->organism); hPrintf("<div class='fieldRow'><span class='fieldLabel'>Assembly:</span> %s</div>\n", fromDb->description); puts("</div>\n"); /* DESTINATION SECTION (editable) */ puts("<div class='convertSection'>\n"); puts("<div class='sectionLabel'>Destination</div>\n"); /* Hidden fields for form submission */ hPrintf("<input name='%s' value='%s' type='hidden'>\n", HGLFT_TOORG_VAR, toDb->organism); -hPrintf("<input name='%s' value='%s' type='hidden'>\n", HGLFT_TODB_VAR, liftOver->toDb); /* Search bar */ char *searchBarId = "toGenomeSearch"; puts("<div class='fieldRow'>\n"); puts("<span class='fieldLabel'>Search:</span>\n"); printGenomeSearchBar(searchBarId, "Search for target genome...", NULL, TRUE, NULL, NULL); puts("</div>\n"); /* Current selection display */ char *selectedLabel = getCurrentGenomeLabel(liftOver->toDb); hPrintf("<div class='currentSelection' id='toGenomeLabel'>%s</div>\n", selectedLabel); /* Assembly dropdown (updates based on genome selection) */ puts("<div class='fieldRow'>\n"); puts("<span class='fieldLabel'>Assembly:</span>\n"); dbList = hGetLiftOverToDatabases(liftOver->fromDb); @@ -282,31 +281,31 @@ { char *toOrg, *toDb; struct liftOverChain *choice = NULL; struct hash *dbRank = hGetDatabaseRank(); double bestScore = -1; struct liftOverChain *this = NULL; /* Get the initial values. */ toOrg = cartCgiUsualString(cart, HGLFT_TOORG_VAR, "0"); toDb = cartCgiUsualString(cart, HGLFT_TODB_VAR, "0"); if (sameWord(toOrg,"0")) toOrg = NULL; if (sameWord(toDb,"0")) toDb = NULL; -if ((toDb != NULL) && !sameOk(toOrg, hOrganism(toDb))) +if ((toDb != NULL) && !sameWordOk(toOrg, hOrganism(toDb))) toDb = NULL; if (toOrg == NULL) toOrg = "Human"; for (this = chainList; this != NULL; this = this->next) { double score = scoreLiftOverChain(this, fromOrg, fromDb, toOrg, toDb, dbRank); if (score > bestScore) { choice = this; bestScore = score; } }