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/lib/barChartUi.c src/hg/lib/barChartUi.c index 3bcbecf4071..70410a14e4c 100644 --- src/hg/lib/barChartUi.c +++ src/hg/lib/barChartUi.c @@ -1,543 +1,547 @@ /* Bar chart track controls */ /* Copyright (C) 2015 The Regents of the University of California * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */ #include "cheapcgi.h" +#include "htmshell.h" #include "cart.h" #include "net.h" #include "errCatch.h" #include "web.h" #include "hui.h" #include "trackDb.h" #include "jsHelper.h" #include "hCommon.h" #include "rainbow.h" #include "htmlColor.h" #include "barChartCategory.h" #include "barChartUi.h" #include "facetedTable.h" #include "tablesTables.h" /* Restrict features on right-click (popup) version */ static boolean isPopup = FALSE; /* Convenience functions for category filter controls */ char *makeCategoryLabel(struct barChartCategory *categ) /* Display category color and label */ { -char buf[256]; -safef(buf, sizeof(buf), "
| ",
isPopup ? 75 : 100, boxed ?" width='100%'":"");
/* Data transform. When selected, the next control (view limits max) is disabled */
puts(" ");
barChartUiLogTransform(cart, track, tdb);
/* Viewing limits max. This control is disabled if log transform is selected */
// construct class so JS can toggle
puts(" ");
barChartUiViewLimits(cart, track, tdb);
puts(" ");
/* Category filter */
printf(""); char *categoryLabel = trackDbSettingClosestToHomeOrDefault(tdb, BAR_CHART_CATEGORY_LABEL, BAR_CHART_CATEGORY_LABEL_DEFAULT); char *db = cartString(cart, "db"); struct barChartCategory *categs = barChartUiGetCategories(db, tdb, NULL); -printf(" %s:\n", categoryLabel);
+printf(" %s:\n", htmlEncode(categoryLabel)); // barChartLabel is hub supplied
char cartVar[1024];
safef(cartVar, sizeof(cartVar), "%s.%s", track, BAR_CHART_CATEGORY_SELECT);
if (isPopup)
{
printf("",
hTrackUiForTrack(track), database, track);
}
else
{
jsMakeCheckboxGroupSetClearButton(cartVar, TRUE);
puts(" ");
jsMakeCheckboxGroupSetClearButton(cartVar, FALSE);
}
printf(" ");
struct slName *selectedValues = NULL;
if (cartListVarExistsAnyLevel(cart, tdb, FALSE, BAR_CHART_CATEGORY_SELECT))
selectedValues = cartOptionalSlNameListClosestToHome(cart, tdb, FALSE, BAR_CHART_CATEGORY_SELECT);
makeCategoryCheckboxes(cartVar, categs, selectedValues);
puts("\n |