bd6026f91fd94fe919fd1b815d27668759021196 chmalee Fri Sep 25 13:10:55 2026 -0700 Fix vcf filter code after merging with master, refs #37617 diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 9f01230ed9b..de5b0f34b9c 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -4100,31 +4100,34 @@ struct dyString *dy = dyStringNew(128); dyStringPrintf(dy, "%s.%s.%s", name, isHighlight ? "highlightBy": "filterBy", filterBy->column); filterBy->htmlName = dy->string; return filterBy; } filterBy_t *filterByValues(struct trackDb *tdb, struct cart *cart, struct trackDbFilter *trackDbFilters, char *name) /* Build a filterBy_t list from tdb variables of the form *FilterValues */ { // Not every tdb has an autoSql: superTracks and tracks pointing at a // bigData file that isn't reachable at UI time both return NULL here. // That's fine for filterValues.* settings as long as a filterLabel.* // override is provided; buildFilterBy() already tolerates a NULL `as`. -struct asObject *as = asForTdb(NULL, tdb); +// VCF filters are on INFO fields, which are not autoSql columns. +struct asObject *as = NULL; +if (!startsWith("vcf", tdb->type)) + as = asForTdb(NULL, tdb); filterBy_t *filterByList = NULL, *filter; struct trackDbFilter *fieldFilter; while ((fieldFilter = slPopHead(&trackDbFilters)) != NULL) { // slAddTail (not slAddHead) keeps the priority-sorted order from tdbGetTrackFilters // since filterBySetCfgUi displays the list head-to-tail. if ((filter = buildFilterBy(tdb, cart, as, fieldFilter, name)) != NULL) slAddTail(&filterByList, filter); } return filterByList; } filterBy_t *filterBySetGetGuts(struct trackDb *tdb, struct cart *cart, char *name, char *subName, char *settingName) // Gets one or more "filterBy" settings (ClosestToHome). returns NULL if not found { @@ -7206,35 +7209,36 @@ int count = 0; struct trackDbFilter *trackDbFilters = NULL; if (isHighlight) trackDbFilters = tdbGetTrackTextHighlights(tdb); else trackDbFilters = tdbGetTrackTextFilters(tdb); if (trackDbFilters) { puts("
"); struct trackDbFilter *filter = NULL; struct sqlConnection *conn = NULL; if (!isHubTrack(db) && !isGenArk(db)) conn = hAllocConnTrack(db, tdb); struct asObject *as = asForTdb(conn, tdb); hFreeConn(&conn); + boolean isVcf = startsWith("vcf", tdb->type); while ((filter = slPopHead(&trackDbFilters)) != NULL) { char *trackDbLabel = getLabelSetting(cart, tdb, filter->fieldName); char *value = cartUsualStringClosestToHome(cart, tdb, FALSE, filter->name, filter->setting); - if (as != NULL) + if (as != NULL && !isVcf) { struct asColumn *asCol = asColumnFind(as, filter->fieldName); if (asCol != NULL) { if (trackDbLabel == NULL) trackDbLabel = asCol->comment; } else if (defaultFieldLocation(filter->fieldName) < 0) errAbort("Building filter on field %s which is not in AS file.", filter->fieldName); } if (trackDbLabel == NULL) trackDbLabel = filter->fieldName; if (isHighlight && count == 0) printHighlightColorPicker(cart, tdb);