632d91991149700af031438008b9270e366cf830 jcasper Fri Aug 16 11:01:01 2024 -0700 Adds support for multiple filterBy sets on the same page, refs #32644 diff --git src/hg/lib/hui.c src/hg/lib/hui.c index ae0841b..b3d034a 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -4462,38 +4462,46 @@ } } printf(">%s</OPTION>\n",label); } printf("</SELECT>\n"); puts("</td>"); } puts("</TR></TABLE>"); } void filterBySetCfgUi(struct cart *cart, struct trackDb *tdb, filterBy_t *filterBySet, boolean onOneLine, char *prefix) /* Does the filter UI for a list of filterBy structure */ { -filterBySetCfgUiGuts(cart, tdb, filterBySet, onOneLine, "Filter", "fbc", "All", prefix, FALSE); +char selectIdPrefix[4096]; +safef(selectIdPrefix, sizeof(selectIdPrefix), "fbc_%s", prefix); +// Our checklists use ddcl.js, which doesn't seem to play nicely when elements have id strings that include '.' +replaceChar(selectIdPrefix, '.', '_'); +filterBySetCfgUiGuts(cart, tdb, filterBySet, onOneLine, "Filter", selectIdPrefix, "All", prefix, FALSE); } void highlightBySetCfgUi(struct cart *cart, struct trackDb *tdb, filterBy_t *filterBySet, boolean onOneLine, char *prefix, boolean isHighlight) /* Does the highlight UI for a list of filterBy structure */ { -filterBySetCfgUiGuts(cart, tdb, filterBySet, onOneLine, "Highlight", "hbc", "None", prefix, TRUE); +char selectIdPrefix[4096]; +safef(selectIdPrefix, sizeof(selectIdPrefix), "hbc_%s", prefix); +// Our checklists use ddcl.js, which doesn't seem to play nicely when elements have id strings that include '.' +replaceChar(selectIdPrefix, '.', '_'); +filterBySetCfgUiGuts(cart, tdb, filterBySet, onOneLine, "Highlight", selectIdPrefix, "None", prefix, TRUE); } #define COLOR_BG_DEFAULT_IX 0 #define COLOR_BG_ALTDEFAULT_IX 1 #define DIVIDING_LINE "<TR valign=\"CENTER\" line-height=\"1\" BGCOLOR=\"%s\"><TH colspan=\"5\" " \ "align=\"CENTER\"><hr noshade color=\"%s\" width=\"100%%\"></TD></TR>\n" #define DIVIDER_PRINT(color) printf(DIVIDING_LINE,COLOR_BG_DEFAULT,(color)) static boolean divisionIfNeeded(char **lastDivide,dividers_t *dividers,membership_t *membership) // Keeps track of location within subtracks in order to provide requested division lines { boolean division = FALSE; if (dividers) { if (lastDivide != NULL)