\n");
+printScoreFilter(cart, track);
puts(
-"
\n"
-);
-puts("Limit to protein coding genes: \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);
+"
\n"
+"
\n");
+puts(
+" \n");
+}
+
+static void printTissueTable()
+/* Output HTML with tissue labels and colors, in 2 columns, to fit next to body map */
+{
+struct gtexTissue *tis, *tissues = gtexGetTissues(version);
+char var[512];
+safef(var, sizeof var, "%s.%s", trackDb->track, GTEX_TISSUE_SELECT);
+struct hash *selectedHash = cartHashList(cart, var);
+struct gtexTissue **tisTable = NULL;
+int count = slCount(tissues);
+AllocArray(tisTable, count);
+int i=0, col=0;
+int cols = 2;
+int last = count/2 + 1;
+
puts(
+ " \n"
+ "
\n"
-);
-puts("
Limit to genes scored at or above: \n");
-safef(buf, sizeof(buf), "%s.%s", tdb->track, SCORE_FILTER);
-int score = cartUsualInt(cart, buf, 0);
-int minScore = 0, maxScore = 1000;
-cgiMakeIntVarWithLimits(buf, score, "Minimum score", 0, minScore, maxScore);
+"
\n");
+puts(
+"\n");
+for (tis = tissues; tis != NULL; tis = tis->next)
+ {
+ if (tis->id < last)
+ i = tis->id * 2;
+ else
+ i = (tis->id - last) * 2 + 1;
+ tisTable[i] = tis;
+ }
+boolean all = (hashNumEntries(selectedHash) == 0) ? TRUE : FALSE;
+for (i=0; iname) != NULL);
printf(
- " (range %d-%d)\n",
- minScore, maxScore);
+ "color);
+ printf(
+ "style='background-color: #%06X;"
+ "border-style: solid; border-width: 2px;"
+ "border-color: #%06X;'> \n",
+ isChecked ? tis->color : 0xFFFFFF, tis->color);
+ printf(
+ "%s",
+ isChecked ? "tissueSelected" : "", tis->name, tis->description);
+ printf(
+ " ",
+ var, tis->name, isChecked ? "checked" : "");
puts(
-" \n"
-);
+ " ");
+ col++;
+ if (col > cols-1)
+ {
+ puts(" \n");
+ col = 0;
+ }
+ }
puts(
-" \n"
-);
+" \n");
puts(
-" \n"
-);
+"
");
+char buf[512];
+safef(buf, sizeof(buf), "%s%s.%s", cgiMultListShadowPrefix(), trackDb->track, GTEX_TISSUE_SELECT);
+cgiMakeHiddenVar(buf, "0");
}
static void printTrackConfig()
/* Print track configuration panels, including Body Map.
The layout is 2-column. Left column is body map SVG.
Right column has a top panel for configuration settings (non-tissue),
and a lower panel with a tissue selection list.
*/
{
puts(
+"\n"
"
\n"
-);
-
-// TODO: remove bodyMap id here
-puts(
-"
\n"
-);
+"
\n");
printBodyMap();
puts(
"
\n"
-);
-puts(
-"
\n"
-);
+"
\n");
printConfigPanel();
printTissueTable();
puts(
"
\n"
-);
-puts(
-"
\n"
-);
+"
\n");
}
static void printTrackDescription()
{
-puts("
");
-puts("
");
-puts("
Track Description
");
-puts("
");
-puts("
");
-if (tdb->html != NULL)
- {
- puts("
");
- puts("
");
-puts(tdb->html);
+puts(
+"
\n"
+"
\n"
+"
Track Description
\n"
+"
\n"
+"
\n"
+"
\n"
+"
\n");
+puts(trackDb->html);
+puts(
+"
\n"
+"
\n");
}
-puts("
");
-puts("
");
+
+static struct trackDb *getTrackDb(char *database, char *track)
+/* Check if this is an assembly with GTEx track and get trackDb */
+{
+struct sqlConnection *conn = sqlConnect(db);
+if (conn == NULL)
+ errAbort("Can't connect to database %s\n", db);
+char where[256];
+safef(where, sizeof(where), "tableName='%s'", track);
+// TODO: use hdb, hTrackDbList to get table names of trackDb,
+struct trackDb *tdb = trackDbLoadWhere(conn, "trackDb", where);
+sqlDisconnect(&conn);
+return tdb;
}
-static void doMainPage()
-/* Send HTML with javascript to bootstrap the user interface. */
+static void doMiddle(struct cart *theCart)
+/* Send HTML with javascript to display the user interface. */
{
-// Start web page with new banner
+cart = theCart;
+// Start web page with new-style header
webStartJWestNoBanner(cart, db, "Genome Browser GTEx Track Settings");
-puts("
");
-puts("
");
+puts("
");
+puts("
");
char *genome = NULL, *clade = NULL;
-// char *chromosome = cartUsualString(cart, "c", hDefaultChrom(database));
-//char *track = cartString(cart, "g");
getDbGenomeClade(cart, &db, &genome, &clade, oldVars);
+char *track = cartString(cart, "g");
+trackDb = getTrackDb(db, track);
+if (!trackDb)
+ errAbort("No GTEx track %s found in database %s\n", track, db);
+version = gtexVersion(track);
-// Check if this is an assembly with GTEx track
-struct sqlConnection *conn = sqlConnect(db);
-if (conn == NULL)
- errAbort("Can't connect to database %s\n", db);
-
-char *table = "gtexGene";
-version = gtexVersion(table);
-
-// TODO: use hdb, hTrackDbList to get table names of trackDb,
-tdb = trackDbLoadWhere(conn, "trackDb", "tableName = 'gtexGene'");
-sqlDisconnect(&conn);
-if (!tdb)
- errAbort("No GTEx track found in database %s\n", db);
+// Container for bootstrap grid layout
+puts(
+"
");
-// Main JS
+// Initialize illustration display and handle mouseover and clicks
puts("");
webIncludeFile("inc/jWestFooter.html");
-
webEndJWest();
}
-void doMiddle(struct cart *theCart)
-/* Display the main page or execute a command and update the page */
-{
-cart = theCart;
-if (cgiOptionalString(CARTJSON_COMMAND))
- doCartJson();
-else
- doMainPage();
-}
-
int main(int argc, char *argv[])
/* Process CGI / command line. */
{
-/* Null terminated list of CGI Variables we don't want to save
- * permanently. */
+/* Null terminated list of CGI Variables we don't want to save to cart */
/* TODO: check these */
-char *excludeVars[] = { "submit", "Submit", "g", NULL, "ajax", NULL,};
-//char *excludeVars[] = {CARTJSON_COMMAND, NULL};
+char *excludeVars[] = {"submit", "Submit", "g", NULL};
long enteredMainTime = clock1000();
cgiSpoof(&argc, argv);
oldVars = hashNew(10);
cartEmptyShellNoContent(doMiddle, hUserCookie(), excludeVars, oldVars);
cgiExitTime("hgGtexTrackSettings", enteredMainTime);
return 0;
}