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> " "<a href='hgTracks?position=%s:%d-%d' target='_blank'>%s:%s-%s</a> ", item, chrom, start+1, end, chrom, startBuf, endBuf); printf(" %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>"); + } }