9a3d804d4836f8508ed10a5372e3cc50c4c5ff64 kate Thu Nov 3 20:50:16 2016 -0700 Finish connection to hgTracks; create form and submit button, and get tissues into cart. refs #17369 diff --git src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c index 359410b..520f9c0 100644 --- src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c +++ src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c @@ -100,63 +100,70 @@ 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( " <!-- Tissue list -->" "<div class='row gbSectionBanner'>" " <div class='col-md-1'>Tissues</div>" " <div class='col-md-7 gbSectionInfo'>" " Click label below or in Body Map to set or clear a tissue" " </div>" " <div class='col-md-4 gbButtonContainer'>" - " <div id='setAll' class='goButtonContainer gtButton gbWhiteButton'>set all</div>" - " <div id='clearAll' class='goButtonContainer gtButton gbWhiteButton'>clear all</div>" + " <div id='setAll' class='gbButtonContainer gtButton gbWhiteButton'>set all</div>" + " <div id='clearAll' class='gbButtonContainer gtButton gbWhiteButton'>clear all</div>" " </div>" "</div>" ); puts("<table class='tissueTable'>"); puts("<tr>"); 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; i<count; i++) { tis = tisTable[i]; - boolean isChecked = (hashLookup(selectedHash, tis->name) != NULL); + boolean isChecked = all || (hashLookup(selectedHash, tis->name) != NULL); printf("<td class='tissueColor' bgcolor=%06X></td>" - "<td class='tissueLabel %s' id='%s'>%s</td>", + "<td class='tissueLabel %s' id='%s'>%s", tis->color, isChecked ? "tissueSelected" : "", tis->name, tis->description); + printf("<input type='checkbox' name='%s' value='%s' %s style='display: none;'>", + var, tis->name, isChecked ? "checked" : ""); + puts("</td>"); col++; if (col > cols-1) { puts("</tr>\n<tr>"); col = 0; } } puts("</tr>\n"); puts("</table>"); +char buf[512]; +safef(buf, sizeof(buf), "%s%s.%s", cgiMultListShadowPrefix(), tdb->track, GTEX_TISSUE_SELECT); +cgiMakeHiddenVar(buf, "0"); } static void printBodyMap() { puts( " <!-- Body Map panel -->" " <object id='bodyMapSvg' type='image/svg+xml' class='gbImage gtexBodyMap' data='/images/bodyMap.svg'>" " Body Map illustration not found" " </object>" ); } static void printVisSelect() { enum trackVisibility vis = tdb->visibility; @@ -371,35 +378,41 @@ // 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); +printf("<FORM ACTION='%s' NAME='MAIN_FORM' METHOD=%s>\n\n", + hgTracksName(), cartUsualString(cart, "formMethod", "POST")); puts( "<div class='container-fluid'>\n" ); printTrackHeader(); printTrackConfig(); +puts( + "</FORM>" +); + printTrackDescription(); puts("</div>"); // end panel, section and body layout container // Track description // JS libraries doJsIncludes(); // Main JS puts("<script src='../js/hgGtexTrackSettings.js'></script>"); webIncludeFile("inc/jWestFooter.html");