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");