b3af5822d95c94932b6d7b7abd93d1078bf251ee
braney
  Mon Oct 30 16:55:40 2023 -0700
changes in response to max review #32416

diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index 137ab02..2145bb4 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -26285,30 +26285,44 @@
 if (isProt)
     extraForMismatch = "";
 char buffer[4096];
 safef(buffer, sizeof buffer, customTextTemplate, bigBedTn.forCgi, host, extraForMismatch, bigBedTn.forCgi, trackName, trackDescription);
 
 struct customTrack *ctList = getCtList();
 struct customTrack *newCts = customFactoryParse(database, buffer, FALSE, NULL);
 theCtList = customTrackAddToList(ctList, newCts, NULL, FALSE);
 
 customTracksSaveCart(database, cart, theCtList);
 
 cartSetString(cart, "i", "PrintAllSequences");
 hgCustom(newCts->tdb->track, NULL);
 }
 
+void doHPRCTable(struct trackDb *tdb, char *itemName)
+/* Put up a generic bigBed details page, with a table of links to turn on related
+ *  * chain tracks with visibility toggles */
+{
+int start = cartInt(cart, "o");
+int end = cartInt(cart, "t");
+genericHeader(tdb, itemName);
+genericBigBedClick(NULL, tdb, itemName, start, end, 0);
+printTrackHtml(tdb);
+// tell the javscript to reorganize the column of assemblies:
+jsIncludeFile("hgc.js", NULL);
+jsInlineF("var doHPRCTable = true;\n");
+}
+
 void doMiddle()
 /* Generate body of HTML. */
 {
 char *track = cartString(cart, "g");
 char *item = cloneString(cartOptionalString(cart, "i"));
 char *parentWigMaf = cartOptionalString(cart, "parentWigMaf");
 struct trackDb *tdb = NULL;
 
 char *dupWholeName = NULL;
 boolean isDup = isDupTrack(track);
 if (isDup)
     {
     dupWholeName = track;
     track = dupTrackSkipToSourceName(track);
     }
@@ -27670,30 +27684,34 @@
 else if (tdb != NULL &&
         (startsWithWord("vcfTabix", tdb->type) || sameWord("vcfPhasedTrio", tdb->type)))
     {
     doVcfTabixDetails(tdb, item);
     }
 else if (tdb != NULL && startsWithWord("vcf", tdb->type))
     {
     doVcfDetails(tdb, item);
     }
 else if (tdb != NULL && 
         (startsWithWord("barChart", tdb->type) || startsWithWord("bigBarChart", tdb->type)))
     {
     doBarChartDetails(tdb, item);
     printTrackHtml(tdb);
     }
+else if (startsWith("hprcDeletions", table) || startsWith("hprcInserts", table) || startsWith("hprcArr", table))
+    {
+    doHPRCTable(tdb, item);
+    }
 else if (tdb != NULL)
     {
     genericClickHandler(tdb, item, NULL);
     }
 else
     {
     cartWebStart(cart, database, "%s", track);
     warn("Sorry, clicking there doesn't do anything yet (%s).", track);
     }
 /* End of 1000+ line dispatch on table involving 100+ if/elses. */
 
 cartHtmlEnd();
 }
 
 struct hash *orgDbHash = NULL;