afc8cef2dc4d4178a80bea4b2167364a636e73b8 braney Thu Apr 4 16:59:08 2024 -0700 with bigBed labels, if there's only one choice, just let user choose if the label is on or off diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 5802fb5..590659d 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -7094,55 +7094,65 @@ if (tdbIsComposite(tdb)) return; if (trackDbSettingClosestToHomeOn(tdb, "linkIdInName")) return; struct asObject *as = asForDb(tdb, db); if (as == NULL) return; struct slPair *labelList = buildFieldList(tdb, "labelFields", as); struct slPair *defaultLabelList = buildFieldList(tdb, "defaultLabelFields", as); char varName[1024]; if ((labelList == NULL) || sameString(labelList->name, "none")) return; -printf("Label: "); struct slPair *thisLabel = labelList; +if (thisLabel->next == NULL) // If there's only one option we either show the label or not. + { + printf("Show Label: "); + safef(varName, sizeof(varName), "%s.label.%s", prefix, thisLabel->name); + boolean option = cartUsualBoolean(cart, varName, TRUE); + cgiMakeCheckBox(varName, option); + } +else + { + printf("Label: "); for(; thisLabel; thisLabel = thisLabel->next) { safef(varName, sizeof(varName), "%s.label.%s", prefix, thisLabel->name); boolean isDefault = FALSE; if (defaultLabelList == NULL) isDefault = (thisLabel == labelList); else if (sameString(defaultLabelList->name, "none")) isDefault = FALSE; else isDefault = (slPairFind(defaultLabelList, thisLabel->name) != NULL); boolean option = cartUsualBoolean(cart, varName, isDefault); cgiMakeCheckBox(varName, option); // find comment for the column listed struct asColumn *col = as->columnList; unsigned num = ptToInt(thisLabel->val); for(; col && num--; col = col->next) ; assert(col); printf(" %s   ", col->comment); } } +} void mergeSpanCfgUi(struct cart *cart, struct trackDb *tdb, char *prefix) /* If this track offers a merge spanned items option, put up the cfg for it, which * is just a checkbox with a small explanation. Comparing tdb->track to prefix * ensures we don't offer this control at the composite level, as this is a * subtrack only config */ { if (trackDbSettingOn(tdb, MERGESPAN_TDB_SETTING) && sameString(tdb->track, prefix)) { boolean curOpt = trackDbSettingOn(tdb, "mergeSpannedItems"); char mergeSetting[256]; safef(mergeSetting, sizeof(mergeSetting), "%s.%s", tdb->track, MERGESPAN_CART_SETTING); if (cartVarExists(cart, mergeSetting)) curOpt = cartBoolean(cart, mergeSetting); printf("Merge items that span the current region:");