\n", title);
int count = slCount(selects);
struct categorySelect **categArray;
AllocArray(categArray, count);
int i=0;
struct categorySelect *sel;
for (i=0, sel = selects; sel != NULL; sel = sel->next, i++)
categArray[i] = sel;
int col=0;
int row=0;
int tableColumns=1;
for (i=0; i" "
");
struct categorySelect *catSel;
struct barChartCategory *categ;
struct categorySelect *all = NULL;
for (categ = categs; categ != NULL; categ = categ->next)
{
AllocVar(catSel);
@@ -119,31 +116,30 @@
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("Log10(x+1) transform:\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()
/* Max median score, for scaling */
{
-//TODO: get from trackDb
return 10000;
}
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("View limits maximum:\n", buf);
safef(cartVar, sizeof(cartVar), "%s.%s", track, BAR_CHART_MAX_LIMIT);
int viewMax = cartCgiUsualInt(cart, cartVar, BAR_CHART_MAX_LIMIT_DEFAULT);
@@ -151,31 +147,31 @@
char *unit = trackDbSettingClosestToHomeOrDefault(tdb, BAR_CHART_UNIT, "");
printf(" %s (range 0-%d)\n", buf, unit, round(barChartUiMaxMedianScore()));
}
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
- * TODO: Consider removing table code */
+ */
{
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)
{
categs = barChartGetCategories(database, tdb->table);
}
else
{
int count = chopLine(cloneString(labels), words);
@@ -219,56 +215,52 @@
((rainbow[i].b & 0xff));
}
slAddHead(&categs, categ);
}
slReverse(&categs);
}
return categs;
}
struct barChartCategory *barChartUiGetCategoryById(int id, char *database,
struct trackDb *tdb)
/* Get category info by id */
{
struct barChartCategory *categ;
struct barChartCategory *categs = barChartUiGetCategories(database, tdb);
-// TODO: consider making this more efficient
for (categ = categs; categ != NULL; categ = categ->next)
if (categ->id == id)
return categ;
return NULL;
}
char *barChartUiGetCategoryLabelById(int id, char *database, struct trackDb *tdb)
/* Get label for a category id */
{
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 */
{
-
-// FIXME: isPopup can't be global
if (cartVarExists(cart, "ajax"))
isPopup = TRUE;
boxed = cfgBeginBoxAndTitle(tdb, boxed, title);
-// KRR FIX: another candidate for table lookup ?
if (startsWith("big", tdb->type))
labelCfgUi(database, cart, tdb);
printf("\n
\n
",
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(" ");