e6b0dc7877ae4b24f56682885e03263fd2da3582 braney Tue Aug 18 11:37:04 2026 -0700 lib, hgc: encode barChart, BAM and VCF detail text consistently, refs #38123 diff --git src/hg/hgc/barChartClick.c src/hg/hgc/barChartClick.c index 7cb1d54f446..721f1cf9717 100644 --- src/hg/hgc/barChartClick.c +++ src/hg/hgc/barChartClick.c @@ -521,48 +521,51 @@ // get name and name2 from trackDb, .as file, or use defaults struct asColumn *nameCol = NULL, *name2Col = NULL; //struct asColumn *name2Col; char *nameLabel = NULL, *name2Label = NULL; if (as != NULL) { numColumns = slCount(as->columnList); nameCol = asFindColByIx(as, BARCHART_NAME_COLUMN_IX); name2Col = asFindColByIx(as, BARCHART_NAME2_COLUMN_IX); } nameLabel = trackDbSettingClosestToHomeOrDefault(tdb, "bedNameLabel", nameCol ? nameCol->comment : "Item"); struct slPair *fields = getFields(tdb, row); if (trackDbSettingClosestToHomeOrDefault(tdb, "url", NULL) != NULL) printCustomUrlWithFields(tdb, item, item, TRUE, fields); else - printf("%s: %s ", nameLabel, chartItem->name); + // the label comes from trackDb or the autoSql, the name from the bigBed + printf("%s: %s ", hubEncode(tdb, nameLabel), hubEncode(tdb, chartItem->name)); name2Label = name2Col ? name2Col->comment : "Alternative name"; if (differentString(chartItem->name2, "")) { if (trackDbSettingClosestToHomeOrDefault(tdb, "url2", NULL) != NULL) printOtherCustomUrl(tdb, chartItem->name2, "url2", TRUE); else - printf("(%s: %s)
\n", name2Label, chartItem->name2); + printf("(%s: %s)
\n", hubEncode(tdb, name2Label), hubEncode(tdb, chartItem->name2)); } else printf("
\n"); int categId; float highLevel = barChartMaxValue(chartItem, &categId); char *units = trackDbSettingClosestToHomeOrDefault(tdb, BAR_CHART_UNIT, "units"); char *metric = trackDbSettingClosestToHomeOrDefault(tdb, BAR_CHART_METRIC, ""); +// barChartMetric, barChartUnit and the bar labels all come from trackDb printf("Maximum %s value: %0.2f %s in %s
\n", - metric, highLevel, units, barChartUiGetCategoryLabelById(categId, database, tdb, NULL)); + hubEncode(tdb, metric), highLevel, hubEncode(tdb, units), + hubEncode(tdb, barChartUiGetCategoryLabelById(categId, database, tdb, NULL))); printf("Gene position: " "%s %s:%d-%d\n", database, hgTracksPathAndSettings(), database, chartItem->chrom, chartItem->chromStart+1, chartItem->chromEnd, chartItem->chrom, chartItem->chromStart+1, chartItem->chromEnd); printf("  Strand: %s\n", chartItem->strand); // print any remaining extra fields if (numColumns > 0) { extraFieldsPrint(tdb, NULL, extraFields, extraFieldCount); } char *matrixUrl = NULL, *sampleUrl = NULL; struct barChartItemData *vals = getSampleVals(tdb, chartItem, &matrixUrl, &sampleUrl);