24fece8377dedf184e8e872325ff2af175076552 max Mon May 4 05:51:05 2026 -0700 hui: fix duplicated filter UI on bigGenePred; tighten supertrack filter changes Two issues, both surfaced reviewing #37426: 1. bigGenePred tracks (e.g. openprot) rendered every filterBy/highlightBy elements with +// the same id, and dropdownchecklist.js only binds the first; the second copy +// stays display:none and shows no input fields. So skip the inline pass for +// bigGenePred and let scoreCfgUi own it. +boolean isBigGenePred = startsWith("bigGenePred", tdb->type); +if (!isBigGenePred) + { filterBy_t *filterBySet = filterBySetGet(tdb,cart,name); if (filterBySet != NULL) { printf("
"); filterBySetCfgUi(cart,tdb,filterBySet,FALSE, name); filterBySetFree(&filterBySet); } filterBy_t *highlightBySet = highlightBySetGet(tdb,cart,name); if (highlightBySet != NULL) { printf("
"); highlightBySetCfgUi(cart,tdb,highlightBySet,FALSE, name, TRUE); filterBySetFree(&highlightBySet); } + } squishyPackOption(cart, name, title, tdb); filterNameOption(cart, name, tdb); wigOption(cart, name, title, tdb); cfgEndBox(boxed); // N.B. scoreCfgUi maybe creates a box, so this is called after cfgEndBox // unclear what the logic is with box creation here -if (startsWith("bigGenePred", tdb->type)) +if (isBigGenePred) { char *scoreMax = trackDbSettingClosestToHome(tdb, SCORE_FILTER _MAX); int maxScore = (scoreMax ? sqlUnsigned(scoreMax):1000); scoreCfgUi(db, cart,tdb,name,title,maxScore,boxed); } } static boolean isSpeciesOn(struct cart *cart, struct trackDb *tdb, char *species, char *option, int optionSize, boolean defaultState) /* check the cart to see if species is turned off or on (default is defaultState) */ { boolean parentLevel = isNameAtParentLevel(tdb,option); if (*option == '\0') safef(option, optionSize, "%s.%s", tdb->track, species); else {