4734e09dea54e231a21e474826e46f90fba326ad
kate
  Wed Sep 13 14:47:47 2017 -0700
Add info icon to tissue selection panel.  Clicking this will toggle display of sample count for all tissues.  Input from Casey Brown, U Penn.  Note this also effects GTEx Gene track. refs #15646

diff --git src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c
index b646917..f09df09 100644
--- src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c
+++ src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c
@@ -55,30 +55,31 @@
 printf(
 "           <span class='gbTrackName'>\n"
 "               %s Track\n"
 "               <span class='gbAssembly'> %s </span>\n"
 "           </span>"
 "           <span class='gbTrackTitle'> %s </span>\n"
 , tdb->shortLabel, assembly, tdb->longLabel);
 puts(
 "<!-- Info icon built from stacked fa icons -->\n"
 "           <a href='#INFO_SECTION' title='Jump to the track description'>\n"
 "               <span class='gbIconSmall fa-stack'>\n"
 "                   <i class='gbBlueDarkColor fa fa-circle fa-stack-2x'></i>\n"
 "                   <i class='gbWhiteColor fa fa-info fa-stack-1x'></i>\n"
 "               </span></a>\n"
 );
+
 if (tdb->parent)
     {
     // link to supertrack
     char *encodedMapName = cgiEncode(tdb->parent->track);
     char *chromosome = cartUsualString(cart, "c", hDefaultChrom(database));
     puts("&nbsp;");
     printf(
     "       <a href='%s?%s=%s&c=%s&g=%s' title='Go to container track (%s)'>\n"
     "           <i class='gbIconLevelUp fa fa-level-up'></i>\n"
     "       </a>\n",
                 hgTrackUiName(), cartSessionVarName(), cartSessionId(cart),
                 chromosome, encodedMapName, tdb->parent->shortLabel
     );
     freeMem(encodedMapName);
     }
@@ -230,59 +231,71 @@
 char *version = gtexVersion(tdb->track);
 struct gtexTissue *tis, *tissues = gtexGetTissues(version);
 char var[512];
 safef(var, sizeof var, "%s.%s", tdb->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(
 " <!-- Tissue list -->\n"
 "<div class='row gbSectionBanner'>\n"
- "  <div class='col-md-1'>Tissues</div>\n"
- "  <div class='col-md-7 gbSectionInfo'>\n"
- "      Click label below or in Body Map to set or clear a tissue\n"
+"  <div class='col-md-2'>Tissues\n"
+"    <!-- Info icon built from stacked fa icons -->\n"
+"    <span id='showSampleCount' title='Show sample counts'>\n"
+"      <span class='gbIconSmall fa-stack'>\n"
+"        <i class='gbBlueDarkColor fa fa-circle fa-stack-2x'></i>\n"
+"        <i class='gbWhiteColor fa fa-info fa-stack-1x'></i>\n"
+"      </span></a>\n"
+"    </span>\n"
+"  </div>\n"
+"  <div class='col-md-6 gbSectionInfo'>\n"
+"      Click below or in Body Map to change tissues\n"
 "  </div>\n"
 "  <div class='col-md-4 gbButtonContainer text-right'>\n"
 "    <div id='setAll' class='gbButtonSetClear gbButton'>set all</div>\n"
 "    <div id='clearAll' class='gbButtonSetClear gbButton'>clear all</div>\n"
 "  </div>\n"
 "</div>\n"
 );
 
 puts(
 "<table class='gbmTissueTable'>\n");
 puts(
 "<tr>\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;
+struct hash *tscHash = gtexGetTissueSampleCount(version);
 for (i=0; i<count; i++)
     {
     tis = tisTable[i];
     boolean isChecked = all || (hashLookup(selectedHash, tis->name) != NULL);
     printf(
+            "<td class='gbmTissueSampleCount'>%s%d</td>\n ", 
+                i == 0 ? "N= ":"", hashIntValDefault(tscHash, tis->name, 0));
+    printf(
             "<td class='gbmTissueColorPatch %s' "
                 "data-tissueColor=#%06X ",
                     isChecked ? "" : "gbmTissueNotSelectedColor", tis->color);
     printf(
                 "style='background-color: #%06X;"
                     "border-color: #%06X;'></td>\n",
                     isChecked ? tis->color : 0xFFFFFF, tis->color);
     printf(
             "<td class='gbmTissueLabel %s' id='%s'>%s",
                 isChecked ? "gbmTissueSelected" : "", tis->name, tis->description);
     // Hidden checkbox stores value for cart
     printf(
             "<input type='checkbox' name='%s' value='%s' %s style='display: none;'>", 
                 var, tis->name, isChecked ? "checked" : "");
     puts(