30720cca39e1e8cdfc6c644f729dfd2ee80a4331
angie
  Tue Oct 15 11:43:58 2019 -0700
Don't show 'set all' and 'clear all' buttons for filter options if there is only one value in the list.  refs #21784

diff --git src/hg/lib/vcfUi.c src/hg/lib/vcfUi.c
index 2171683..ee4a163 100644
--- src/hg/lib/vcfUi.c
+++ src/hg/lib/vcfUi.c
@@ -256,34 +256,37 @@
 safef(cartVar, sizeof(cartVar), "%s." VCF_MIN_QUAL_VAR, name);
 cgiMakeDoubleVar(cartVar, minQual, 10);
 printf("<BR>\n");
 }
 
 static void vcfCfgFilterColumn(struct cart *cart, struct trackDb *tdb, struct vcfFile *vcff,
 			       char *name, boolean parentLevel)
 /* Show controls for filtering by value of VCF's FILTER column, which uses values defined
  * in the header. */
 {
 int filterCount = slCount(vcff->filterDefs);
 if (filterCount < 1)
     return;
 printf("<B>Exclude variants with these FILTER values:</B><BR>\n");
 char cartVar[1024];
+if (slCount(vcff->filterDefs) > 1)
+    {
     safef(cartVar, sizeof(cartVar), "%s."VCF_EXCLUDE_FILTER_VAR, name);
     jsMakeCheckboxGroupSetClearButton(cartVar, TRUE);
     puts("&nbsp;");
     jsMakeCheckboxGroupSetClearButton(cartVar, FALSE);
+    }
 char *values[filterCount];
 char *labels[filterCount];
 int i;
 struct vcfInfoDef *filt;
 for (i=0, filt=vcff->filterDefs;  filt != NULL;  i++, filt = filt->next)
     {
     values[i] = filt->key;
     struct dyString *dy = dyStringNew(0);
     dyStringAppend(dy, filt->key);
     if (isNotEmpty(filt->description))
 	dyStringPrintf(dy, " (%s)", filt->description);
     labels[i] = dyStringCannibalize(&dy);
     }
 struct slName *selectedValues = NULL;
 if (cartListVarExistsAnyLevel(cart, tdb, FALSE, VCF_EXCLUDE_FILTER_VAR))