2b41f66277f1191800c203f0dbda57f1c2bbdd30
kate
  Wed Apr 19 10:00:28 2017 -0700
Add support for maxLimit trackDb setting. refs #18736

diff --git src/hg/lib/barChartUi.c src/hg/lib/barChartUi.c
index 6da00e2..f9eea8f 100644
--- src/hg/lib/barChartUi.c
+++ src/hg/lib/barChartUi.c
@@ -113,51 +113,59 @@
 
 /* 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()
+double barChartUiMaxMedianScore(struct trackDb *tdb)
 /* Max median score, for scaling */
 {
-return 10000;
+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 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 cartVar[1024];
 char buf[512];
 safef(cartVar, sizeof(cartVar), "%s.%s", track, BAR_CHART_LOG_TRANSFORM);
 boolean isLogTransform = cartCgiUsualBoolean(cart, cartVar, BAR_CHART_LOG_TRANSFORM_DEFAULT);
 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_LIMIT);
-int viewMax = cartCgiUsualInt(cart, cartVar, BAR_CHART_MAX_LIMIT_DEFAULT);
+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, 4, isLogTransform ? "disabled" : "");
 char *unit = trackDbSettingClosestToHomeOrDefault(tdb, BAR_CHART_UNIT, "");
-printf("<span class='%s'> %s (range 0-%d)</span>\n", buf, unit, round(barChartUiMaxMedianScore()));
+printf("<span class='%s'> %s (range 0-%d)</span>\n", buf, unit, 
+                                round(barChartUiMaxMedianScore(tdb)));
 }
 
 char *barChartUiGetLabel(char *database, struct trackDb *tdb)
 /* Get label for category list */
 {
 return trackDbSettingClosestToHomeOrDefault(tdb, BAR_CHART_CATEGORY_LABEL, 
                                         BAR_CHART_CATEGORY_LABEL_DEFAULT);
 }
 
 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 
  */
 {