b929a0e9258b441e65b187e3bec6c3509a9b90ae markd Sun Jun 23 08:22:48 2024 -0700 include track name in some of the filter error message so once can have a clue what to fix diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 5390003..a11b721 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -3967,43 +3967,43 @@ } if (trackDbLabel == NULL) { safef(labelSetting, sizeof labelSetting, "%s%s", field, FILTER_LABEL_NAME_CAP); trackDbLabel = cartOrTdbString(cart, tdb, labelSetting, NULL); } return trackDbLabel; } static filterBy_t *buildFilterBy(struct trackDb *tdb, struct cart *cart, struct asObject *as, struct trackDbFilter *tdbFilter, char *name) /* Build a filterBy_t structure from a FilterValues statement. */ { boolean isHighlight = startsWith("highlightValues.", tdbFilter->name); char *field = tdbFilter->fieldName; if (isEmpty(tdbFilter->setting)) - errAbort("FilterValues setting of field '%s' must have a value.", tdbFilter->fieldName); + errAbort("track %s: FilterValues setting of field '%s' must have a value.", tdb->track, tdbFilter->fieldName); char *value = cartUsualStringClosestToHome(cart, tdb, FALSE, tdbFilter->name, tdbFilter->setting); filterBy_t *filterBy; AllocVar(filterBy); filterBy->column = cloneString(field); filterBy->title = cloneString(field); /// title should come from AS file, or trackDb variable struct asColumn *asCol = asColumnFind(as, field); if (asCol != NULL) filterBy->title = asCol->comment; else - errAbort("Building filter on field %s which is not in AS file.", field); + errAbort("Track %s: Building filter on field %s which is not in AS file.", tdb->track, field); char *trackDbLabel = getLabelSetting(cart, tdb, field); if (trackDbLabel) filterBy->title = trackDbLabel; filterBy->useIndex = FALSE; filterBy->slValues = slNameListFromCommaEscaped(value); chopUpValues(filterBy); if (cart != NULL) { char suffix[256]; safef(suffix, sizeof(suffix), "%s.%s", isHighlight ? "highlightBy" : "filterBy", filterBy->column); boolean parentLevel = isNameAtParentLevel(tdb,tdb->track); if (cartLookUpVariableClosestToHome(cart,tdb,parentLevel,suffix,&(filterBy->htmlName))) { filterBy->slChoices = cartOptionalSlNameList(cart,filterBy->htmlName); freeMem(filterBy->htmlName); @@ -4016,31 +4016,31 @@ filterBy->slChoices = slNameListFromCommaEscaped(setting); } 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 */ { struct asObject *as = asForTdb(NULL, tdb); if (as == NULL) - errAbort("Unable to get autoSql for %s", name); + errAbort("Track %s: Unable to get autoSql for %s", tdb->track, name); filterBy_t *filterByList = NULL, *filter; struct trackDbFilter *fieldFilter; while ((fieldFilter = slPopHead(&trackDbFilters)) != NULL) { if ((filter = buildFilterBy(tdb, cart, as, fieldFilter, name)) != NULL) slAddHead(&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 { // first check to see if this tdb is using "new" FilterValues cart variables if (differentString(subName, "highlightBy"))