0daab9c07e1fb7b75223d61b0faa52e34d94302e braney Fri May 8 10:31:34 2026 -0700 Block hgTables output for QuickLift tracks and hide QuickLift groups, refs #37519 QuickLift remaps tracks from another assembly on the fly for display, but the underlying bigBed data is in the source assembly's coordinates, so output queries against the destination assembly's region return no results (or, with a whole-genome query, dump source-assembly data with source coordinates). Detect quickLiftUrl on the selected track and errAbort from doTopSubmit and doSummaryStats with a clear message. Also filter groups whose label starts with "QuickLift" out of the Group dropdown in hgTables, and clear the cart's group var if it was pointing at a QuickLift group. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> diff --git src/hg/hgTables/mainPage.c src/hg/hgTables/mainPage.c index 371bceb36e8..840f1925b7d 100644 --- src/hg/hgTables/mainPage.c +++ src/hg/hgTables/mainPage.c @@ -65,35 +65,44 @@ } void makeRegionButton(char *val, char *selVal) /* Make region radio button including a little Javascript * to save selection state. */ { makeRegionButtonExtraHtml(val, selVal, NULL); } struct grp *showGroupField(char *groupVar, char *event, char *groupScript, struct sqlConnection *conn, boolean allTablesOk) /* Show group control. Returns selected group. */ { struct grp *group, *groupList = fullGroupList; struct grp *selGroup = findSelectedGroup(groupList, groupVar); +/* If the saved selection is a QuickLift group, fall back to a visible default + * since QuickLift groups are filtered from the dropdown below. */ +if (selGroup != NULL && startsWith("QuickLift", selGroup->label)) + { + cartRemove(cart, groupVar); + selGroup = findSelectedGroup(groupList, groupVar); + } hPrintf("<label for='%s'><B>Group:</B></label>\n", groupVar); hPrintf("<SELECT NAME=%s id='%s'>\n", groupVar, groupVar); jsOnEventById(event,groupVar,groupScript); for (group = groupList; group != NULL; group = group->next) { + if (startsWith("QuickLift", group->label)) + continue; if (allTablesOk || differentString(group->name, "allTables")) hPrintf(" <OPTION VALUE=%s%s>%s</OPTION>\n", group->name, (group == selGroup ? " SELECTED" : ""), group->label); } hPrintf("</SELECT>\n"); return selGroup; } static void addIfExists(struct hash *hash, struct slName **pList, char *name) /* Add name to tail of list if it exists in hash. */ { if (hashLookup(hash, name)) slNameAddTail(pList, name); }