5f99b76015eefbb14a2ac75ddcb56f8c1e17ca65 jcasper Wed Jan 21 00:01:19 2026 -0800 Changes provided by Andrew Smith to tidy up the new composite UI, refs #36320 diff --git src/hg/js/facetedComposite.js src/hg/js/facetedComposite.js index edd3a5dcd4d..e14690b3867 100644 --- src/hg/js/facetedComposite.js +++ src/hg/js/facetedComposite.js @@ -218,31 +218,32 @@ let { maxCheckboxes, primaryKey } = embeddedData; if (maxCheckboxes === null || maxCheckboxes === undefined) { maxCheckboxes = DEFAULT_MAX_CHECKBOXES; } const excludeCheckboxes = [primaryKey]; const filtersDiv = document.getElementById("filters"); colNames.forEach((key) => { // skip attributes if they should be excluded from checkbox sets if (excludeCheckboxes.includes(key)) { return; } const sortedPossibleVals = Array.from(possibleValues[key].entries()); - sortedPossibleVals.sort((a, b) => b[1] - a[1]); // neg: less-than + sortedPossibleVals.sort((a, b) => // neg: less-than + a[1] !== b[1] ? b[1] - a[1] : a[0].localeCompare(b[0])); // Use 'maxCheckboxes' most frequent items (if they appear > 1 time) let topToShow = sortedPossibleVals .filter(([val, count]) => val.trim().toUpperCase() !== "NA" && count > 1) .slice(0, maxCheckboxes); // Any "other/Other/OTHER" entry will be put at the end let otherKey = null, otherValue = null; topToShow = topToShow.filter(([val, value]) => { if (val.toLowerCase() === "other") { otherKey = val; otherValue = value; return false; }