ff9f567866c9c0e9e429e010fcdde9b6af5ea92e
kate
  Mon Oct 14 10:07:49 2019 -0700
Add collapsible panel for details of individual interactions in a cluster. Requested by QA. refs #24037

diff --git src/hg/hgc/interactClick.c src/hg/hgc/interactClick.c
index df3824b..dcd49b2 100644
--- src/hg/hgc/interactClick.c
+++ src/hg/hgc/interactClick.c
@@ -1,28 +1,29 @@
 /* Details page for interact type tracks */
 
 /* Copyright (C) 2018 The Regents of the University of California 
  * See README in this or parent directory for licensing information. */
 
 #include "common.h"
 #include "obscure.h"
 #include "hdb.h"
 #include "jksql.h"
 #include "hgc.h"
 #include "customTrack.h"
 #include "trashDir.h"
 #include "hex.h"
+#include "jsHelper.h"
 #include <openssl/sha.h>
 
 #include "interact.h"
 #include "interactUi.h"
 
 struct interactPlusRow
     {
     /* Keep field values in string format, for url processing */
     struct interactPlusRow *next;
     struct interact *interact;
     char **row;
     };
 
 static struct interactPlusRow *getInteractsFromTable(struct trackDb *tdb, char *chrom, 
                                     int start, int end, char *name, char *foot)
@@ -448,35 +449,46 @@
         printf("<b>%s interactions region:</b> &nbsp;&nbsp;"
                         "<a href='hgTracks?position=%s:%d-%d' target='_blank'>%s:%s-%s</a> ",
                         item, chrom, start+1, end, chrom, startBuf, endBuf);
         printf("&nbsp;&nbsp;%s bp<br>\n", sizeBuf);
         }
     else
         {
         // overlapping items, same start/end/name
         doInteractRegionDetails(tdb, inters);
         }
     multiRegionLink(tdb, item, inters);
     printf("</p>");
     }
 
 //genericHeader(tdb, item);
+if (clusterMode && count > 1)
+    {
+    puts("<table>");
+    jsBeginCollapsibleSectionFontSize(cart, tdb->track, "clusterInteractions",
+                          "Show individual interactions in cluster", FALSE, "inherit");
+    }
 static struct interactPlusRow *ipr = NULL;
 for (ipr = iprs; ipr != NULL; ipr = ipr->next)
     {
     if (count > 1)
         printf("<hr>\n");
     doInteractItemDetails(tdb, ipr, item, count > 1);
     if (foot || (clusterMode && count > 1))
         {
         struct interact *inter = ipr->interact;
         // just one interact (we have these in list for handling clusters earlier)
         inter->next = NULL;
         doInteractRegionDetails(tdb, inter);
         multiRegionLink(tdb, inter->name, inter);
         }
     if (count > 1 && !isEmptyTextField(ipr->interact->name) && sameString(ipr->interact->name, item))
         printf("<hr>\n");
     }
+if (clusterMode && count > 1)
+    {
+    jsEndCollapsibleSection();
+    puts("</table>");
+    }
 }