ecf928caa35cb69cc3b6e8b78789c83091559ed2
braney
  Fri Oct 18 13:41:32 2019 -0700
allow '.' in FilterType statements

diff --git src/hg/hgTracks/bigBedTrack.c src/hg/hgTracks/bigBedTrack.c
index 464fcf5..9023ef3 100644
--- src/hg/hgTracks/bigBedTrack.c
+++ src/hg/hgTracks/bigBedTrack.c
@@ -165,31 +165,36 @@
 else
     {
     filter->comparisonType = COMPARE_WILDCARD;
     filter->wildCardString = cloneString(value);
     }
 
 return filter;
 }
 
 struct bigBedFilter *bigBedMakeFilterBy(struct cart *cart, struct bbiFile *bbi, struct trackDb *tdb, char *field, struct slName *choices)
 /* Add a bigBed filter using a trackDb filterBy statement. */
 {
 struct bigBedFilter *filter;
 char filterType[4096];
 safef(filterType, sizeof filterType, "%s%s", field, FILTER_TYPE_NAME);
-char *setting = cartOrTdbString(cart, tdb, filterType, FILTERBY_SINGLE);
+char *setting = cartOrTdbString(cart, tdb, filterType, NULL);
+if (setting == NULL)
+    {
+    safef(filterType, sizeof filterType, "%s.%s", field, FILTER_TYPE_NAME);
+    setting = cartOrTdbString(cart, tdb, filterType, FILTERBY_SINGLE);
+    }
 
 AllocVar(filter);
 filter->fieldNum =  getFieldNum(bbi, field);
 if (setting && (sameString(setting, FILTERBY_SINGLE_LIST) || sameString(setting, FILTERBY_MULTIPLE_LIST_OR)))
     filter->comparisonType = COMPARE_HASH_LIST_OR;
 else if (setting && sameString(setting, FILTERBY_MULTIPLE_LIST_AND))
     filter->comparisonType = COMPARE_HASH_LIST_AND;
 else
     filter->comparisonType = COMPARE_HASH;
 filter->valueHash = newHash(5);
 filter->numValuesInHash = slCount(choices);
 
 for(; choices; choices = choices->next)
     hashStore(filter->valueHash, choices->name);