1888f6dd81f220f2ccd0e49c9b8a9a817ae0618c
kate
  Thu Nov 10 15:59:18 2016 -0800
Cleanup C code. refs #17369

diff --git src/hg/lib/gtexUi.c src/hg/lib/gtexUi.c
index fba09a2..8833fa3 100644
--- src/hg/lib/gtexUi.c
+++ src/hg/lib/gtexUi.c
@@ -272,88 +272,132 @@
 slReverse(&allTissues);
 makeGroupCheckboxes(name, NULL, allTissues);
 puts("</tr></table>");
 char buf[512];
 safef(buf, sizeof(buf), "%s%s", cgiMultListShadowPrefix(), name);
 cgiMakeHiddenVar(buf, "0");
 }
 
 void gtexPortalLink(char *geneId)
 /* print URL to GTEX portal gene expression page using Ensembl Gene Id*/
 {
 printf("<a target='_blank' href='http://www.gtexportal.org/home/gene/%s'>"
         "View at GTEx portal</a>\n", geneId);
 }
 
-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%'":"");
+/* Convenience functions shared by hgTrackUi and hgGtexTrackSettings. hgTrackUi is for now still
+ * available from right-click */
 
+void gtexGeneUiGeneLabel(struct cart *cart, char *track, struct trackDb *tdb)
+/* Radio buttons to select format of gene label */
+{
 char cartVar[1024];
-char buf[512];
-
-/* Gene labels  */
-printf("<div>");
 char *geneLabel = cartUsualStringClosestToHome(cart, tdb, isNameAtParentLevel(tdb, track), 
                         GTEX_LABEL, GTEX_LABEL_DEFAULT);
 printf("<b>Label:</b> ");
 safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_LABEL);
 cgiMakeRadioButton(cartVar, GTEX_LABEL_SYMBOL , sameString(GTEX_LABEL_SYMBOL, geneLabel));
 printf("%s ", "gene symbol");
 cgiMakeRadioButton(cartVar, GTEX_LABEL_ACCESSION, sameString(GTEX_LABEL_ACCESSION, geneLabel));
 printf("%s ", "accession");
 cgiMakeRadioButton(cartVar, GTEX_LABEL_BOTH, sameString(GTEX_LABEL_BOTH, geneLabel));
 printf("%s ", "both");
-printf("</div>\n");
+}
 
-/* Filter on coding genes */
-printf("<div>");
-printf("<b>Limit to protein coding genes:</b>\n");
+void gtexGeneUiCodingFilter(struct cart *cart, char *track, struct trackDb *tdb)
+/* Checkbox to restrict display to protein coding genes */
+{
+char cartVar[1024];
+puts("<b>Limit to protein coding genes:</b>\n");
 safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_CODING_GENE_FILTER);
 boolean isCodingOnly = cartCgiUsualBoolean(cart, cartVar, GTEX_CODING_GENE_FILTER_DEFAULT);
 cgiMakeCheckBox(cartVar, isCodingOnly);
+}
 
-/* Show exons in gene model */
-printf("&nbsp;&nbsp;<b>Show GTEx gene model</b>\n");
+void gtexGeneUiGeneModel(struct cart *cart, char *track, struct trackDb *tdb)
+/* Checkbox to enable display of GTEx gene model */
+{
+char cartVar[1024];
+puts("&nbsp;&nbsp;<b>Show GTEx gene model</b>\n");
 safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_SHOW_EXONS);
 boolean showExons = cartCgiUsualBoolean(cart, cartVar, GTEX_SHOW_EXONS_DEFAULT);
 cgiMakeCheckBox(cartVar, showExons);
-printf("</div>");
+}
 
-/* Data transform. When selected, the next control (view limits max) is disabled */
-printf("<div><b>Log10 transform:</b>\n");
+void gtexGeneUiLogTransform(struct cart *cart, char *track, struct trackDb *tdb)
+/* Checkbox to select log-transformed RPKM values */
+{
+char cartVar[1024];
+char buf[512];
+puts("<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
+void gtexGeneUiViewLimits(struct cart *cart, char *track, struct trackDb *tdb)
+/* Set viewing limits if log transform not checked */
+{
+char cartVar[1024];
+char buf[512];
+boolean isLogTransform = cartCgiUsualBoolean(cart, cartVar, GTEX_LOG_TRANSFORM_DEFAULT);
 safef(buf, sizeof buf, "%sViewLimitsMaxLabel %s", track, isLogTransform ? "disabled" : "");
-printf("&nbsp;&nbsp;<span class='%s'><b>View limits maximum:</b></span>\n", buf);
+printf("<span class='%s'><b>View limits maximum:</b></span>\n", buf);
 safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_MAX_LIMIT);
 int viewMax = cartCgiUsualInt(cart, cartVar, GTEX_MAX_LIMIT_DEFAULT);
 cgiMakeIntVarWithExtra(cartVar, viewMax, 4, isLogTransform ? "disabled" : "");
 char *version = gtexVersion(tdb->table);
 printf("<span class='%s'>  RPKM (range 0-%d)</span>\n", buf, round(gtexMaxMedianScore(version)));
-printf("</div>");
+}
+
+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];
+
+/* Gene labels  */
+puts("<div>");
+gtexGeneUiGeneLabel(cart, track, tdb);
+puts("</div>\n");
+
+/* Filter on coding genes */
+puts("<div>");
+gtexGeneUiCodingFilter(cart, track, tdb);
+
+/* Show exons in gene model */
+puts("&nbsp;&nbsp;");
+gtexGeneUiGeneModel(cart, track, tdb);
+puts("</div>");
+
+/* Data transform. When selected, the next control (view limits max) is disabled */
+
+puts("<div>");
+gtexGeneUiLogTransform(cart, track, tdb);
+
+/* Viewing limits max.  This control is disabled if log transform is selected */
+// construct class so JS can toggle
+puts("&nbsp;&nbsp;");
+gtexGeneUiViewLimits(cart, track, tdb);
+puts("</div>");
 
 #ifdef COMPARISON
 /* Sample selection */
 printf("<div><b>Samples:</b>&nbsp;");
 safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_SAMPLES);
 char *selected = cartCgiUsualString(cart, cartVar, GTEX_SAMPLES_DEFAULT); 
 boolean isAllSamples = sameString(selected, GTEX_SAMPLES_ALL);
 safef(buf, sizeof buf, "onchange='gtexSamplesChanged(\"%s\")'", track);
 char *command = buf;
 cgiMakeOnClickRadioButton(cartVar, GTEX_SAMPLES_ALL, isAllSamples, command);
 printf("All\n");
 cgiMakeOnClickRadioButton(cartVar, GTEX_SAMPLES_COMPARE_SEX, !isAllSamples, command);
 printf("Compare by gender\n");
 printf("</div>");
 
@@ -389,30 +433,31 @@
 /* Tissue filter */
 printf("<br>");
 printf("<div><b>Tissues:</b>\n");
 safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_TISSUE_SELECT);
 if (isPopup)
     {
     printf("<a href='../cgi-bin/hgTrackUi?g=%s'><button type='button'>Change</button><a>", track);
     }
 else
     {
     jsMakeCheckboxGroupSetClearButton(cartVar, TRUE);
     puts("&nbsp;");
     jsMakeCheckboxGroupSetClearButton(cartVar, FALSE);
     }
 printf("</div>");
+char *version = gtexVersion(tdb->table);
 struct gtexTissue *tissues = gtexGetTissues(version);
 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, track, version);
 else
     makeAllTissueCheckboxes(cartVar, tissues, selectedValues);
 
 puts("\n</table>\n");
 cfgEndBox(boxed);
 }