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("<B>Label:</B> ");
 struct slPair *thisLabel = labelList;
+if (thisLabel->next == NULL) // If there's only one option we either show the label or not.
+    {
+    printf("<B>Show Label:</B> ");
+    safef(varName, sizeof(varName), "%s.label.%s", prefix, thisLabel->name);
+    boolean option = cartUsualBoolean(cart, varName, TRUE);
+    cgiMakeCheckBox(varName, option);
+    }
+else
+    {
+    printf("<B>Label:</B> ");
     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&nbsp;&nbsp;&nbsp;", 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("<b>Merge items that span the current region</b>:");