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:");