21bf4f713e944af4e8810544d68c441510ea85a3 kate Wed Jul 26 16:31:01 2017 -0700 Add support for maxHeightPixels in trackDb and UI of barChart type tracks. refs #19872 diff --git src/hg/lib/barChartUi.c src/hg/lib/barChartUi.c index b5cfcbe..3903721 100644 --- src/hg/lib/barChartUi.c +++ src/hg/lib/barChartUi.c @@ -144,30 +144,45 @@ cgiMakeCheckBoxWithId(cartVar, isAutoScale, cartVar); jsOnEventByIdF("change", cartVar, "barChartTransformChanged(event);"); boolean isViewLimits = !isAutoScale && !isLogTransform; safef(buf, sizeof buf, "%sViewLimitsMaxLabel %s", track, !isViewLimits ? "disabled" : ""); puts(" "); printf("View limits maximum:\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, 4, !isViewLimits ? "disabled" : ""); char *unit = trackDbSettingClosestToHomeOrDefault(tdb, BAR_CHART_UNIT, ""); printf(" %s (range 0-%d)\n", buf, unit, round(barChartUiMaxMedianScore(tdb))); } +void barChartUiMaxHeight(struct cart *cart, char *track, struct trackDb *tdb) +/* Input to change maximum track height */ +{ +int min = BAR_CHART_MAX_HEIGHT_MIN; +int deflt = BAR_CHART_MAX_HEIGHT_DEFAULT; +int max = BAR_CHART_MAX_HEIGHT_MAX; +int settingsDefault; +wigFetchMinMaxPlusPixelsWithCart(cart, tdb, track, &min, &max, &deflt, &settingsDefault); +puts("Track height maximum:\n"); +char cartVar[1024]; +safef(cartVar, sizeof(cartVar), "%s.%s", track, HEIGHTPER); +cgiMakeIntVarWithLimits(cartVar, deflt, "Track height maximum", 0, min, max); +printf("pixels (range: %d to %d, default: %d)", min, max, settingsDefault); +} + 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) { @@ -240,53 +255,53 @@ 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
",
- isPopup ? 75 : 100, boxed ?" width='100%'":"");
-
-char cartVar[1024];
/* Data transform (log, autoscale or viewlimits) */
-puts(" ");
+char cartVar[1024];
+puts(" ");
+puts("");
+
+/* Maximum track height */
+puts(""); barChartUiViewTransform(cart, track, tdb); -puts(" "); +barChartUiMaxHeight(cart, track, tdb); +puts(" "); /* Category filter */ printf(""); 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(" %s:\n", categoryLabel);
safef(cartVar, sizeof(cartVar), "%s.%s", track, BAR_CHART_CATEGORY_SELECT);
if (isPopup)
{
printf("",
hTrackUiForTrack(track), track);
}
else
{
jsMakeCheckboxGroupSetClearButton(cartVar, TRUE);
puts(" ");
jsMakeCheckboxGroupSetClearButton(cartVar, FALSE);
}
printf(" ");
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 |