5a34c495d5fe1db2aab6d1785c0b0239dbed2520
angie
  Sat Aug 16 21:21:02 2025 -0700
New track type lorax: details page embeds Lorax multi-tree viewer.
The trees are subtrees of an Ancestral Recombination Graph (ARG).
This commit also adds a track with 1000 Genomes data, tgpLorax.
The details page uses an iframe to embed the Lorax viewer from
a separate server (most likely will run in a docker container on
the GB server hosts; that will make this track more complicated for
mirror operators than other tracks).

diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index d0d9d6df8d9..56be3ec082f 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -28044,30 +28044,34 @@
     }
 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)|| startsWith("hprcDouble", table))
     {
     doHPRCTable(tdb, item);
     }
+else if (tdb && sameString(tdb->type, "lorax"))
+    {
+    doLorax(tdb, item);
+    }
 else
     return FALSE;
 
 return TRUE;
 }
 
 struct hash *orgDbHash = NULL;
 
 void initOrgDbHash()
 /* Function to initialize a hash of organism names that hash to a database ID.
  * This is used to show alignments by hashing the organism associated with the
  * track to the database name where the chromInfo is stored. For example, the
  * mousBlat track in the human browser would hash to the mm2 database. */
 {
 orgDbHash = hashNew(8);