bc948392618f037e666eeff707b087670e90c303
kate
  Thu Aug 24 14:17:35 2017 -0700
Revert autoscale and maxHeight features (to commit 7d342854b5719897461428785269775c06727326).  Waiting for after release of barchart tracks and hubs before adding back (with additional UI review). refs #19355

diff --git src/hg/lib/barChartUi.c src/hg/lib/barChartUi.c
index e6aed16..f424dc2 100644
--- src/hg/lib/barChartUi.c
+++ src/hg/lib/barChartUi.c
@@ -101,110 +101,73 @@
         catSel->checked = TRUE;
     else
         catSel->checked = (hashLookup(checkHash, categ->name) != NULL);
     slAddHead(&all, catSel);
     }
 slReverse(&all);
 makeGroupCheckboxes(name, NULL, all);
 puts("</tr></table>");
 char buf[512];
 safef(buf, sizeof(buf), "%s%s", cgiMultListShadowPrefix(), name);
 cgiMakeHiddenVar(buf, "0");
 }
 
 /* Convenience functions for hgTrackUi */
 
+void barChartUiLogTransform(struct cart *cart, char *track, struct trackDb *tdb)
+/* Checkbox to select log-transformed RPKM values */
+/* NOTE: this code from gtexUi.c.  Consider sharing. */
+{
+char cartVar[1024];
+puts("<b>Log10(x+1) transform:</b>\n");
+safef(cartVar, sizeof(cartVar), "%s.%s", track, BAR_CHART_LOG_TRANSFORM);
+boolean isLogTransform = cartCgiUsualBoolean(cart, cartVar, BAR_CHART_LOG_TRANSFORM_DEFAULT);
+cgiMakeCheckBoxWithId(cartVar, isLogTransform, cartVar);
+jsOnEventByIdF("change", cartVar, "barChartUiTransformChanged('%s');", track);
+}
+
 double barChartUiMaxMedianScore(struct trackDb *tdb)
 /* Max median score, for scaling */
 {
 char *setting = trackDbSettingClosestToHome(tdb, BAR_CHART_MAX_LIMIT);
 if (setting != NULL)
     {
     double max = sqlDouble(setting);
     if (max > 0.0)
         return max;
     }
 return BAR_CHART_MAX_LIMIT_DEFAULT;
 }
 
-void barChartUiViewTransform(struct cart *cart, struct trackDb *tdb)
-/* Checkboxes to select log-transform or autoscale RPKM values, or text input for view limits */
+void barChartUiViewLimits(struct cart *cart, char *track, struct trackDb *tdb)
+/* Set viewing limits if log transform not checked */
+/* NOTE: this code from gtexUi.c.  Consider sharing. */
 {
-char *track = tdb->track;
-char buf[512];
 char cartVar[1024];
-puts("<b>Log10(x+1) transform:</b>\n");
+char buf[512];
 safef(cartVar, sizeof(cartVar), "%s.%s", track, BAR_CHART_LOG_TRANSFORM);
 boolean isLogTransform = cartCgiUsualBoolean(cart, cartVar, BAR_CHART_LOG_TRANSFORM_DEFAULT);
-cgiMakeCheckBoxWithId(cartVar, isLogTransform, cartVar);
-jsOnEventByIdF("change", cartVar, "barChartTransformChanged(event);");
-
-boolean isAutoScale = FALSE;
-#define AUTO_SCALE
-#ifdef AUTO_SCALE
-// Implemented, but leaving out for now (seems confusing)
-puts("&nbsp;&nbsp;");
-puts("<b>Auto-scale:</b>\n");
-safef(cartVar, sizeof(cartVar), "%s.%s", track, BAR_CHART_AUTOSCALE);
-isAutoScale = cartCgiUsualBoolean(cart, cartVar, BAR_CHART_AUTOSCALE_DEFAULT);
-cgiMakeCheckBoxWithId(cartVar, isAutoScale, cartVar);
-jsOnEventByIdF("change", cartVar, "barChartTransformChanged(event);");
-#endif
-
-boolean isViewLimits = !isAutoScale && !isLogTransform;
-safef(buf, sizeof buf, "%sViewLimitsMaxLabel %s", track, !isViewLimits ? "disabled" : "");
-puts("&nbsp;&nbsp;");
+safef(buf, sizeof buf, "%sViewLimitsMaxLabel %s", track, isLogTransform ? "disabled" : "");
 printf("<span class='%s'><b>View limits maximum:</b></span>\n", buf);
 safef(cartVar, sizeof(cartVar), "%s.%s", track, BAR_CHART_MAX_VIEW_LIMIT);
 int viewMax = cartCgiUsualInt(cart, cartVar, BAR_CHART_MAX_VIEW_LIMIT_DEFAULT);
-cgiMakeIntVarWithExtra(cartVar, viewMax, 6, !isViewLimits ? "disabled" : "");
+cgiMakeIntVarWithExtra(cartVar, viewMax, 4, isLogTransform ? "disabled" : "");
 char *unit = trackDbSettingClosestToHomeOrDefault(tdb, BAR_CHART_UNIT, "");
 printf("<span class='%s'> %s (range 0-%d)</span>\n", buf, unit, 
                                 round(barChartUiMaxMedianScore(tdb)));
 }
 
-void barChartUiFetchMinMaxPixels(struct cart *cart, struct trackDb *tdb, 
-                                int *retMin, int *retMax, int *retDefault, int *retCurrent)
-/* Get min/max/default/current settings for track height from cart and trackDb */
-{
-assert(retMin && retMax && retDefault && retCurrent);
-cartTdbFetchMinMaxPixels(cart, tdb, 
-                            BAR_CHART_MAX_HEIGHT_MIN, BAR_CHART_MAX_HEIGHT_MAX, 
-                            BAR_CHART_MAX_HEIGHT_DEFAULT,
-                            retMin, retMax, retDefault, retCurrent);
-}
-
-static void barChartUiMaxHeight(struct cart *cart, struct trackDb *tdb)
-/* Input box to change maximum item height */
-{
-char cartVar[1024];
-safef(cartVar, sizeof(cartVar), "%s.%s", tdb->track, BAR_CHART_LIMIT_HEIGHT);
-boolean limitChartHeight = cartCgiUsualBoolean(cart, cartVar, BAR_CHART_LIMIT_HEIGHT_DEFAULT);
-cgiMakeCheckBoxWithId(cartVar, limitChartHeight, cartVar);
-jsOnEventByIdF("change", cartVar, "barChartHeightLimitChanged(event);");
-
-int min, max, deflt, current;
-barChartUiFetchMinMaxPixels(cart, tdb, &min, &max, &deflt, &current);
-puts("<b>Chart height maximum:</b>\n");
-safef(cartVar, sizeof(cartVar), "%s.%s", tdb->track, HEIGHTPER);
-char buf[512];
-safef(buf, sizeof buf, "%sChartLimitsMaxLabel %s", tdb->track, !limitChartHeight ? "disabled" : "");
-cgiMakeIntVarWithExtra(cartVar, current, 3, !limitChartHeight ? "disabled":"");
-printf("&nbsp;<span class='%s'>pixels&nbsp;(range: %d to %d, default: %d)<span>", 
-        buf, min, max, deflt);
-}
-
 struct barChartCategory *barChartUiGetCategories(char *database, struct trackDb *tdb)
 /* Get category colors and descriptions.  Use barChartColors setting if present.
    If not, if there is a barChartBars setting, assign rainbow colors.
  * O/w look for a table naed track+Category, and use labels and colors there 
  */
 {
 struct barChartCategory *categs = NULL;
 char *words[BAR_CHART_MAX_CATEGORIES];
 char *colorWords[BAR_CHART_MAX_CATEGORIES];
 char *labels = trackDbSettingClosestToHome(tdb, BAR_CHART_CATEGORY_LABELS);
 char *colors = trackDbSettingClosestToHome(tdb, BAR_CHART_CATEGORY_COLORS);
 struct barChartCategory *categ = NULL;
 
 if (labels == NULL)
     {
@@ -277,53 +240,59 @@
 struct barChartCategory *categ = barChartUiGetCategoryById(id, database, tdb);
 if (categ == NULL)
     return "Unknown";
 return categ->label;
 }
 
 void barChartCfgUi(char *database, struct cart *cart, struct trackDb *tdb, char *track, 
                         char *title, boolean boxed)
 /* Bar chart track type */
 {
 if (cartVarExists(cart, "ajax"))
     isPopup = TRUE;
 boxed = cfgBeginBoxAndTitle(tdb, boxed, title);
 if (startsWith("big", tdb->type))
     labelCfgUi(database, cart, tdb);
+printf("\n<table id=barChartControls style='font-size:%d%%' %s>\n<tr><td>", 
+        isPopup ? 75 : 100, boxed ?" width='100%'":"");
 
-/* Data transform (log, autoscale or viewlimits) */
 char cartVar[1024];
-puts("<p>");
-barChartUiViewTransform(cart, tdb);
-puts("</p>");
 
-/* Maximum track height */
-puts("<p>");
-barChartUiMaxHeight(cart, tdb);
-puts("</p>");
+/* Data transform. When selected, the next control (view limits max) is disabled */
+
+puts("<div>");
+barChartUiLogTransform(cart, track, tdb);
+
+/* Viewing limits max.  This control is disabled if log transform is selected */
+// construct class so JS can toggle
+puts("&nbsp;&nbsp;");
+barChartUiViewLimits(cart, track, tdb);
+puts("</div>");
 
 /* Category filter */
 printf("<br>");
 char *categoryLabel =  trackDbSettingClosestToHomeOrDefault(tdb, 
                     BAR_CHART_CATEGORY_LABEL, BAR_CHART_CATEGORY_LABEL_DEFAULT);
 char *db = cartString(cart, "db");
 struct barChartCategory *categs = barChartUiGetCategories(db, tdb);
 printf("<div><b>%s:</b>\n", categoryLabel);
 safef(cartVar, sizeof(cartVar), "%s.%s", track, BAR_CHART_CATEGORY_SELECT);
 if (isPopup)
     {
     printf("<a href='%s?g=%s'><button type='button'>Change</button><a>", 
                 hTrackUiForTrack(track), track);
     }
 else
     {
     jsMakeCheckboxGroupSetClearButton(cartVar, TRUE);
     puts("&nbsp;");
     jsMakeCheckboxGroupSetClearButton(cartVar, FALSE);
     }
 printf("</div>");
 struct slName *selectedValues = NULL;
 if (cartListVarExistsAnyLevel(cart, tdb, FALSE, BAR_CHART_CATEGORY_SELECT))
     selectedValues = cartOptionalSlNameListClosestToHome(cart, tdb, FALSE, BAR_CHART_CATEGORY_SELECT);
 makeCategoryCheckboxes(cartVar, categs, selectedValues);
+
+puts("\n</table>\n");
 cfgEndBox(boxed);
 }