2755debd56fbb1a69333d485b22079c1a8a7495a kate Wed Jan 27 11:49:42 2016 -0800 Special handling of popup configuration for GTEx track (see RM #15873 for why). refs #155645 diff --git src/hg/lib/gtexUi.c src/hg/lib/gtexUi.c index 34d7d52..611e290 100644 --- src/hg/lib/gtexUi.c +++ src/hg/lib/gtexUi.c @@ -1,346 +1,372 @@ /* GTEx (Genotype Tissue Expression) 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 "gtexTissue.h" #include "gtexUi.h" #define SYSTEM_BRAIN "Brain" #define SYSTEM_REPRODUCTIVE "Reproductive" #define SYSTEM_GASTRO "Digestive" #define SYSTEM_ENDOCRINE "Endocrine" #define SYSTEM_CARDIO "Cardiovascular" #define SYSTEM_OTHER "Other" -static void initTissueTableStyle() -{ -puts("\n"); -} +/* Restrict features on right-click (popup) version */ +static boolean isPopup = FALSE; + +/* Convenience functions for tissue filter controls */ static char *makeTissueColorPatch(struct gtexTissue *tis) +/* Display a box colored by defined tissue color */ { char buf[256]; safef(buf, sizeof(buf), "
?", + "../cgi-bin/hgTrackUi", track); // Better to use hgTrackUiName(), but there's an issue + //with header includes, so punting for now + } +else + { printf("\n | \n", orderVar, sortOrder); + } puts(" | "); - -printf(" | Tissue | ", onClick); - -printf("Samples | ", onClick); - -printf("Organ | ", onClick); - -printf("System | ", onClick); +printf("Tissue | ", + sortableClass, onClick); +printf("Samples | ", + sortableClass, onClick); +printf("Organ | ", + sortableClass, onClick); +printf("System | ", + sortableClass, onClick); puts("\n
---|---|---|---|---|---|---|---|---|---|---|
", - name, tis->name, isChecked ? "checked" : ""); + printf(" | ", + name, tis->name, isChecked ? "checked" : "", isPopup ? "disabled" : ""); // color patch printf("\n%s", makeTissueColorPatch(tis)); // tissue name printf("\n | %s | ", tis->description); // sample count int samples = hashIntValDefault(tscHash, tis->name, 0); printf("\n%d | ", samples, samples); // organ printf("\n%s | ", tis->organ); // system printf("\n%s | ", getSystem(tis)); puts("\n
", boxed ?" width='100%'":"");
char cartVar[1024];
char *selected = NULL;
/* Sample selection */
printf("Samples: ");
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);
printf("All\n");
cgiMakeRadioButton(cartVar, GTEX_SAMPLES_COMPARE_SEX, !isAllSamples);
printf("Compare by gender\n");
printf("");
/* Comparison type */
printf(" Comparison display:\n"); 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"); cgiMakeRadioButton(cartVar, GTEX_COMPARISON_MIRROR, isMirror); printf("Two graphs\n"); printf(" "); /* Data transform */ printf("Log10 transform:\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(" View limits maximum:\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);
printf(" RPKM (range 10-180000) Tissue colors:\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(" "); #endif /* Tissue filter */ -printf("Tissue selection:\n"); +if (!isPopup) + { + printf(" Tissue filter:\n"); safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_TISSUE_SELECT); jsMakeCheckboxGroupSetClearButton(cartVar, TRUE); puts(" "); jsMakeCheckboxGroupSetClearButton(cartVar, FALSE); + } struct gtexTissue *tissues = gtexGetTissues(); struct slName *selectedValues = NULL; if (cartListVarExistsAnyLevel(cart, tdb, FALSE, GTEX_TISSUE_SELECT)) selectedValues = cartOptionalSlNameListClosestToHome(cart, tdb, FALSE, GTEX_TISSUE_SELECT); char *selectType = cgiUsualString("tis", "table"); if (sameString(selectType, "group")) makeGroupedTissueCheckboxes(cartVar, tissues, selectedValues); else if (sameString(selectType, "table")) - makeTableTissueCheckboxes(cartVar, tissues, selectedValues, cart); + makeTableTissueCheckboxes(cartVar, tissues, selectedValues, cart, track); else makeAllTissueCheckboxes(cartVar, tissues, selectedValues); cfgEndBox(boxed); } |