4b8ba2cfec3666d658121a82d297c1e07fcf629b
braney
  Tue Jan 23 15:11:36 2018 -0800
ongoing work on hgCollection

diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index f6c4493..035c6fc 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -5165,52 +5165,63 @@
 wigFetchYLineMarkWithCart(cart,tdb,name, &yLineMarkOnOff);
 wigFetchYLineMarkValueWithCart(cart,tdb,name, &yLineMark);
 boolean doNegative = wigFetchDoNegativeWithCart(cart,tdb,tdb->track, (char **) NULL);
 
 printf("<TABLE BORDER=0>");
 
 boolean parentLevel = isNameAtParentLevel(tdb, name);
 boolean didAggregate = FALSE;
 if (parentLevel)
     {
     assert(tdb->parent != NULL);
     char *aggregate = trackDbSetting(tdb->parent, "aggregate");
     if (aggregate != NULL && parentLevel)
         {
         char *aggregateVal = cartOrTdbString(cart, tdb->parent, "aggregate", NULL);
-        printf("<TR valign=center><th align=right>Overlay method:</th><td align=left>");
         safef(option, sizeof(option), "%s.%s", name, AGGREGATE);
+        if (isCustomComposite(tdb))
+            {
+            printf("<TR valign=center><th align=right>Merge method:</th><td align=left>");
+            aggregateExtraDropDown(option, aggregateVal);
+            }
+        else
+            {
+            printf("<TR valign=center><th align=right>Overlay method:</th><td align=left>");
             aggregateDropDown(option, aggregateVal);
+            }
         puts("</td></TR>");
 
 	if (sameString(aggregateVal, WIG_AGGREGATE_STACKED)  &&
 	    sameString(windowingFunction, "mean+whiskers"))
 	    {
 	    windowingFunction = "maximum";
 	    }
 
 	didAggregate = TRUE;
         }
     if (isCustomComposite(tdb))
         {
+        /*
         char *viewFuncVal = cartOrTdbString(cart, tdb->parent, "viewFunc", NULL);
         printf("<TR valign=center><th align=right>Math method:</th><td align=left>");
         safef(option, sizeof(option), "%s.%s", name, VIEWFUNC);
         viewFuncDropDown(option, viewFuncVal);
+        */
 
+        printf("<TR valign=center><th align=right>Missing data treatment:</th><td align=left>");
         char *missingMethodVal = cartOrTdbString(cart, tdb->parent, "missingMethod", NULL);
-        boolean missingIsZero = differentString(missingMethodVal, "missing");
+        boolean missingIsZero = (missingMethodVal == NULL) ||  differentString(missingMethodVal, "missing");
         char buffer[1024];
         safef(buffer, sizeof buffer, "%s.missingMethod",name);
 
         cgiMakeOnEventRadioButtonWithClass(buffer, "zero", missingIsZero, "allOrOnly", "click", NULL);
         puts("missing is zero&nbsp;&nbsp;");
         cgiMakeOnEventRadioButtonWithClass(buffer, "missing", !missingIsZero, "allOrOnly", "click", NULL);
         printf("math with missing values is missing</B>");
         }
     }
 
 printf("<TR valign=center><th align=right>Type of graph:</th><td align=left>");
 safef( option, sizeof(option), "%s.%s", name, LINEBAR );
 wiggleGraphDropDown(option, lineBar);
 if (boxed)
     {