dea095643fe501ea9923781556921916ceff4d3e kate Thu Jan 26 14:19:23 2017 -0800 Initial cut of hgTracks and hgTrackUi for new barchart type track (generalization of GTEx gene expression display). refs #18736 diff --git src/hg/lib/barChartUi.c src/hg/lib/barChartUi.c new file mode 100644 index 0000000..a2ca0e9 --- /dev/null +++ src/hg/lib/barChartUi.c @@ -0,0 +1,213 @@ +/* Bar chart track controls */ + +/* Copyright (C) 2015 The Regents of the University of California + * See README in this or parent directory for licensing information. */ + +#include "cheapcgi.h" +#include "cart.h" +#include "hui.h" +#include "trackDb.h" +#include "jsHelper.h" +#include "hCommon.h" +#include "barChartCategory.h" +#include "barChartUi.h" + +/* Restrict features on right-click (popup) version */ +static boolean isPopup = FALSE; + +/* Convenience functions for category filter controls */ + + +static char *makeCategoryLabel(struct barChartCategory *categ) +{ +/* Display category color and label */ +char buf[256]; +safef(buf, sizeof(buf), "
",
+ isPopup ? 75 : 100, boxed ?" width='100%'":"");
+
+char cartVar[1024];
+
+/* Data transform. When selected, the next control (view limits max) is disabled */
+
+puts(" ");
+barChartUiLogTransform(cart, track, tdb);
+
+/* Viewing limits max. This control is disabled if log transform is selected */
+// construct class so JS can toggle
+puts(" ");
+barChartUiViewLimits(cart, track, tdb);
+puts(" ");
+
+/* Color scheme */
+#ifdef COLOR_SCHEME
+printf("Category colors:\n"); +safef(cartVar, sizeof(cartVar), "%s.%s", track, BAR_CHART_COLORS); +selected = cartCgiUsualString(cart, cartVar, BAR_CHART_COLORS_DEFAULT); +boolean isUserColors = sameString(selected, BAR_CHART_COLORS_USER); +cgiMakeRadioButton(cartVar, BAR_CHART_COLORS_USER, isUserColors); +printf("Defined\n"); +cgiMakeRadioButton(cartVar, BAR_CHART_COLORS_RAINBOW, !isUserColors); +printf("Rainbow\n"); +printf(" "); +#endif + +/* Category filter */ +printf(""); +// TODO: +#define BAR_CHART_CATEGORY_LABEL "categoryLabel" +#define BAR_CHART_CATEGORY_LABEL_DEFAULT "Categories" +char *categoryLabel = trackDbSettingClosestToHomeOrDefault(tdb, + BAR_CHART_CATEGORY_LABEL, BAR_CHART_CATEGORY_LABEL_DEFAULT); +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(" ");
+char *db = cartString(cart, "db");
+struct barChartCategory *categs = barChartGetCategories(db, track);
+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 |