a6d90ca7ebf3efec499da8d81d4f8fdfea5098fa
max
  Wed Dec 17 09:31:35 2014 -0800
adding a bit of javascript to the wiggle drawing options that grey outthe min/max fields if auto-scaling is "on". Also move the auto-scaling
dropdown box up one line, so it's easier to see that a part below is
greyed out. refs #14561

diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index 8ce9737..626f405 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -4603,30 +4603,53 @@
 {
 char *canDoCoverage = cfgOptionEnvDefault("HGDB_CAN_DO_COVERAGE",
                 CanDoCoverageConfVariable, "off");
 if (differentString(canDoCoverage, "on"))
     return;
 
 printf("<BR><B>Display data as a density graph:</B> ");
 char varName[64];
 safef(varName, sizeof(varName), "%s.doWiggle", name);
 boolean option = cartUsualBoolean(cart, varName, FALSE);
 cgiMakeCheckBox(varName, option);
 printf("<BR>\n");
 wigCfgUi(cart,tdb,name,title,TRUE);
 }
 
+void wiggleScaleDropDownJavascript(char *name)
+/* print some js that deactivates the min/max range if autoscaling is activated */
+{
+printf("<script type=\"text/javascript\">\n");
+printf("  $(\"[name='%s.autoScale']\").change(function()\n", name);
+printf("  {\n");
+printf("  val= $(this).find(':selected').val(); \n");
+printf("  if (val==\"auto-scale to data view\")\n");
+printf("     {\n");
+printf("     $(\"[name='%s.minY']\")[0].disabled=true;\n", name);
+printf("     $(\"[name='%s.maxY']\")[0].disabled=true;\n", name);
+printf("     $(\".%sAutoScaleDesc\").attr('style', 'color:grey;');\n", name);
+printf("     }\n");
+printf("     else\n");
+printf("     {\n");
+printf("     $(\"[name='%s.minY']\")[0].disabled=false;\n", name);
+printf("     $(\"[name='%s.maxY']\")[0].disabled=false;\n", name);
+printf("     $(\".%sAutoScaleDesc\").attr('style', 'color:black;');\n", name);
+printf("     }\n");
+printf("  });\n");
+printf("</script>\n");
+}
+
 void wigCfgUi(struct cart *cart, struct trackDb *tdb, char *name, char *title, boolean boxed)
 /* UI for the wiggle track */
 {
 char *typeLine = NULL;  /*  to parse the trackDb type line  */
 char *words[8];     /*  to parse the trackDb type line  */
 int wordCount = 0;  /*  to parse the trackDb type line  */
 char option[256];
 double minY;        /*  from trackDb or cart    */
 double maxY;        /*  from trackDb or cart    */
 double tDbMinY;     /*  data range limits from trackDb type line */
 double tDbMaxY;     /*  data range limits from trackDb type line */
 int defaultHeight;  /*  pixels per item */
 char *horizontalGrid = NULL;    /*  Grid lines, off by default */
 char *transformFunc = NULL;    /* function to transform data points */
 char *alwaysZero = NULL;    /* Always include 0 in range */
@@ -4690,49 +4713,50 @@
 wiggleGraphDropDown(option, lineBar);
 if (boxed)
     {
     printf("</td><td align=right colspan=2>");
     printf("<A HREF=\"%s\" TARGET=_blank>Graph configuration help</A>",WIGGLE_HELP_PAGE);
     }
 puts("</td></TR>");
 
 printf("<TR valign=center><th align=right>Track height:</th><td align=left colspan=3>");
 safef(option, sizeof(option), "%s.%s", name, HEIGHTPER );
 cgiMakeIntVarWithLimits(option, defaultHeight, "Track height",0, minHeightPixels, maxHeightPixels);
 printf("pixels&nbsp;(range: %d to %d)",
        minHeightPixels, maxHeightPixels);
 puts("</TD></TR>");
 
-printf("<TR valign=center><th align=right>Vertical viewing range:</th>"
-       "<td align=left>&nbsp;min:&nbsp;");
+printf("<TR valign=center><th align=right>Data view scaling:</th><td align=left colspan=3>");
+safef(option, sizeof(option), "%s.%s", name, AUTOSCALE );
+wiggleScaleDropDown(option, autoScale);
+wiggleScaleDropDownJavascript(name);
+safef(option, sizeof(option), "%s.%s", name, ALWAYSZERO);
+printf("Always include zero:&nbsp");
+wiggleAlwaysZeroDropDown(option, alwaysZero);
+puts("</TD></TR>");
+
+printf("<TR class=\"%sAutoScaleDesc\" valign=center><th align=right>Vertical viewing range:</th>"
+       "<td align=left>&nbsp;min:&nbsp;", name);
 safef(option, sizeof(option), "%s.%s", name, MIN_Y );
 cgiMakeDoubleVarWithLimits(option, minY, "Range min", 0, NO_VALUE, NO_VALUE);
 printf("</td><td align=leftv colspan=2>max:&nbsp;");
 safef(option, sizeof(option), "%s.%s", name, MAX_Y );
 cgiMakeDoubleVarWithLimits(option, maxY, "Range max", 0, NO_VALUE, NO_VALUE);
 printf("&nbsp;(range: %g to %g)",
        tDbMinY, tDbMaxY);
 puts("</TD></TR>");
 
-printf("<TR valign=center><th align=right>Data view scaling:</th><td align=left colspan=3>");
-safef(option, sizeof(option), "%s.%s", name, AUTOSCALE );
-wiggleScaleDropDown(option, autoScale);
-safef(option, sizeof(option), "%s.%s", name, ALWAYSZERO);
-printf("Always include zero:&nbsp");
-wiggleAlwaysZeroDropDown(option, alwaysZero);
-puts("</TD></TR>");
-
 printf("<TR valign=center><th align=right>Transform function:</th><td align=left>");
 safef(option, sizeof(option), "%s.%s", name, TRANSFORMFUNC);
 printf("Transform data points by:&nbsp");
 wiggleTransformFuncDropDown(option, transformFunc);
 
 printf("<TR valign=center><th align=right>Windowing function:</th><td align=left>");
 safef(option, sizeof(option), "%s.%s", name, WINDOWINGFUNCTION );
 wiggleWindowingDropDown(option, windowingFunction);
 
 printf("<th align=right>Smoothing window:</th><td align=left>");
 safef(option, sizeof(option), "%s.%s", name, SMOOTHINGWINDOW );
 wiggleSmoothingDropDown(option, smoothingWindow);
 puts("&nbsp;pixels</TD></TR>");
 
 printf("<th align=right>Negate values:</th><td align=left>");