7cd97c987844110762ef96424b1a9e97b5485dc6 kate Tue Feb 9 14:02:26 2016 -0800 Add JS to disable/enable GTEx gene track config controls when applicable. refs #15645 diff --git src/hg/lib/gtexUi.c src/hg/lib/gtexUi.c index 3cffce2..59f67f1 100644 --- src/hg/lib/gtexUi.c +++ src/hg/lib/gtexUi.c @@ -276,67 +276,74 @@ cgiMakeHiddenVar(buf, "0"); } void gtexGeneUi(struct cart *cart, struct trackDb *tdb, char *track, char *title, boolean boxed) /* GTEx (Genotype Tissue Expression) per gene data */ { if (cartVarExists(cart, "ajax")) isPopup = TRUE; boxed = cfgBeginBoxAndTitle(tdb, boxed, title); printf("\n<table id=gtexGeneControls style='font-size:%d%%' %s>\n<tr><td>", isPopup ? 75 : 100, boxed ?" width='100%'":""); char cartVar[1024]; char *selected = NULL; +char buf[512]; + +/* Data transform. When selected, the next control (view limits max) is disabled */ +printf("<div><b>Log10 transform:</b>\n"); +safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_LOG_TRANSFORM); +boolean isLogTransform = cartCgiUsualBoolean(cart, cartVar, GTEX_LOG_TRANSFORM_DEFAULT); +safef(buf, sizeof buf, "onchange='gtexTransformChanged(\"%s\")'", track); +cgiMakeCheckBoxJS(cartVar, isLogTransform, buf); + +/* Viewing limits max. This control is disabled if log transform is selected */ +// construct class so JS can toggle +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, GTEX_MAX_LIMIT); +// TODO: set max from gtexInfo table +int viewMax = cartCgiUsualInt(cart, cartVar, GTEX_MAX_LIMIT_DEFAULT); +cgiMakeIntVarWithExtra(cartVar, viewMax, 4, isLogTransform ? "disabled" : ""); +printf("<span class='%s'> RPKM (range 10-180000)</span>\n", buf); +printf("</div>"); /* Sample selection */ printf("<div><b>Samples:</b> "); safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_SAMPLES); selected = cartCgiUsualString(cart, cartVar, GTEX_SAMPLES_DEFAULT); boolean isAllSamples = sameString(selected, GTEX_SAMPLES_ALL); -cgiMakeRadioButton(cartVar, GTEX_SAMPLES_ALL, isAllSamples); +safef(buf, sizeof buf, "onchange='gtexSamplesChanged(\"%s\")'", track); +char *command = buf; +cgiMakeOnClickRadioButton(cartVar, GTEX_SAMPLES_ALL, isAllSamples, command); printf("All\n"); -cgiMakeRadioButton(cartVar, GTEX_SAMPLES_COMPARE_SEX, !isAllSamples); +cgiMakeOnClickRadioButton(cartVar, GTEX_SAMPLES_COMPARE_SEX, !isAllSamples, command); printf("Compare by gender\n"); printf("</div>"); -/* Comparison type */ -printf("<div><b>Comparison display:</b>\n"); +/* Comparison type. Disabled if All samples selected. */ +safef(buf, sizeof buf, "%sComparisonLabel %s", track, isAllSamples ? "disabled" : ""); +printf("<div><b><span class='%s'>Comparison display:</b></span>", buf); safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_COMPARISON_DISPLAY); selected = cartCgiUsualString(cart, cartVar, GTEX_COMPARISON_DEFAULT); boolean isMirror = sameString(selected, GTEX_COMPARISON_MIRROR); + cgiMakeRadioButton(cartVar, GTEX_COMPARISON_DIFF, !isMirror); -printf("Difference graph\n"); +printf("<span class='%s'>Difference graph</span>", buf); cgiMakeRadioButton(cartVar, GTEX_COMPARISON_MIRROR, isMirror); -printf("Two graphs\n"); -printf("</div>"); - -/* Data transform */ -printf("<div><b>Log10 transform:</b>\n"); -safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_LOG_TRANSFORM); -boolean isLogTransform = cartCgiUsualBoolean(cart, cartVar, GTEX_LOG_TRANSFORM_DEFAULT); -cgiMakeCheckBox(cartVar, isLogTransform); - -/* Viewing limits max */ -printf(" <b>View limits maximum:</b>\n"); -safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_MAX_LIMIT); -// TODO: set max and initial limits from gtexInfo table -int viewMax = cartCgiUsualInt(cart, cartVar, GTEX_MAX_LIMIT_DEFAULT); -cgiMakeIntVar(cartVar, viewMax, 4); -//FIXME -printf(" RPKM (range 10-180000)\n"); +printf("<span class='%s'>Two graphs</span>\n", buf); printf("</div>"); /* Color scheme */ // We don't need the rainbow color scheme, but may want another (e.g. different // colors for brain tissues), so leaving code in for now. #ifdef COLOR_SCHEME printf("<p><b>Tissue colors:</b>\n"); safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_COLORS); selected = cartCgiUsualString(cart, cartVar, GTEX_COLORS_DEFAULT); boolean isGtexColors = sameString(selected, GTEX_COLORS_GTEX); cgiMakeRadioButton(cartVar, GTEX_COLORS_GTEX, isGtexColors); printf("GTEx\n"); cgiMakeRadioButton(cartVar, GTEX_COLORS_RAINBOW, !isGtexColors); printf("Rainbow\n"); printf("</p>");