46cacb52f48b67dbdbb131af561827f3f5357a20
braney
  Tue Aug 10 13:20:23 2021 -0700
add utility to make a cartEdit that supports movinb existing tracks to a superTrack .  Add a new cartEdit1 to move a bunch of tracks to three new supertracks

diff --git src/hg/lib/cartRewrite.c src/hg/lib/cartRewrite.c
index 37a4d89..3bd647a 100644
--- src/hg/lib/cartRewrite.c
+++ src/hg/lib/cartRewrite.c
@@ -1,186 +1,75 @@
 /* cartRewrite -- routines to enable cart rewrites. Carts and trackDbs
  * have a version number and this code knows how to make the cart compatble
  * with trackDb. */
 
 /* Copyright (C) 2021 The Regents of the University of California 
  * See README in this or parent directory for licensing information. */
 
 #include "common.h"
 #include "cart.h"
 #include "hgConfig.h"
 
-static char *edit0Mm10tracks[] =
-{
-"snp142",
-"snp142Mult",
-"snp138",
-"snp138Common",
-"snp138Mult",
-"snp137Common",
-"snp137Mult",
-"snp137",
-};
-
-static char *edit0Hg19tracks[] =
-{
-"snp151Flagged",
-"snp151Mult",
-"snp150Mult",
-"snp150Flagged",
-"snp150",
-"snp150Common",
-"snp149Mult",
-"snp149Flagged",
-"snp149",
-"snp149Common",
-"snp147Flagged",
-"snp147Mult",
-"snp147Common",
-"snp147",
-"snp146Mult",
-"snp146Flagged",
-"snp146",
-"snp146Common",
-"snp144Mult",
-"snp144Flagged",
-"snp144Common",
-"snp144",
-"snp142Mult",
-"snp142Flagged",
-"snp142Common",
-"snp142",
-"snp141Flagged",
-"snp141Common",
-"snp141",
-"snp138Flagged",
-"snp138Mult",
-"snp138",
-"snp138Common",
-"snp137Common",
-"snp137Flagged",
-"snp137Mult",
-"snp137",
-"snp135Common",
-"snp135Flagged",
-"snp135Mult",
-"snp135",
-"snp132Common",
-"snp132Flagged",
-"snp132Mult",
-"snp132",
-"snp131",
-"snp130",
-};
-
-static char *edit0Hg38tracks[] =
-{
-"snp151",
-"snp151Common",
-"snp151Flagged",
-"snp151Mult",
-"snp150Mult",
-"snp150",
-"snp150Common",
-"snp150Flagged",
-"snp149Mult",
-"snp149",
-"snp149Common",
-"snp149Flagged",
-"snp141Mult",
-"snp141Flagged",
-"snp141Common",
-"snp141",
-"snp142Mult",
-"snp142Flagged",
-"snp142Common",
-"snp142",
-"snp144Mult",
-"snp144Flagged",
-"snp144Common",
-"snp144",
-"snp147Mult",
-"snp147Flagged",
-"snp147Common",
-"snp147",
-"snp146Mult",
-"snp146Flagged",
-"snp146Common",
-"snp146",
-};
-
-static void turnOnSuper(struct cart *cart, char **trackNames, unsigned numTracks, char *superTrackName)
-{
-boolean turnOnSuper = FALSE;
-int ii;
-
-// go through all the tracks moved into the supertrack
-for(ii = 0; ii < numTracks; ii++)
-    {
-    char *vis = cartOptionalString(cart, trackNames[ii]);
-
-    if (vis)
-        {
-        if (differentString(vis, "hide"))
-            {
-            // Turn on the super track since one of its subtracks was visible before
-            turnOnSuper = TRUE;
-            break;
-            }
-        }
-    }
-
-if (turnOnSuper)
-    cartSetString(cart, superTrackName, "show");
-}
+void cartEdit0(struct cart *cart);
+void cartEdit1(struct cart *cart);
 
-static void cartEdit0(struct cart *cart)
-/* Moving a bunch of SNP tracks to an archive super track.   We need
- * to turn on the super track if any of what are now subTracks are visible.
- */
-{
-// hg38 tracks
-int length = ArraySize(edit0Hg38tracks);
-turnOnSuper(cart, edit0Hg38tracks, length, "dbSnpArchive");
-
-// mm10 tracks
-length = ArraySize(edit0Mm10tracks);
-turnOnSuper(cart, edit0Mm10tracks, length, "dbSnpArchive");
-
-// hg19 tracks
-length = ArraySize(edit0Hg19tracks);
-turnOnSuper(cart, edit0Hg19tracks, length, "dbSnpArchive");
-}
-
-// Here's the list of cart rewrite functions
 struct cartRewrite
 {
 void (*func)(struct cart *cart);
 };
 
+// Here's the list of cart rewrite functions
 static struct cartRewrite cartRewrites[] =
 {
 { cartEdit0},
+{ cartEdit1},
 };
 
 void cartRewrite(struct cart *cart, unsigned trackDbCartVersion, unsigned cartVersion)
 /* Rewrite the cart to update it to expectations of trackDb. */
 {
 if (sameString(cfgOptionDefault("cartVersion", "off"), "off"))
     return;
 
 // call the rewrite functions to bring us up to the trackDb cart version
 for(; cartVersion < trackDbCartVersion; cartVersion++)
     {
     // if we don't have a rewrite for this increment, bail out
     // with a warning in the error_log
     if (cartVersion >= ArraySize(cartRewrites))
         {
         fprintf(stderr,"CartRewriteError: do not have cart rewrite rules to bring it up to version %d requested by trackDb. Reached level %d\n", trackDbCartVersion, cartVersion);
         break;
         }
     (cartRewrites[cartVersion].func)(cart);
     }
 
 cartSetVersion(cart, cartVersion);
 }
 
+void cartTurnOnSuper(struct cart *cart, char **trackNames, unsigned numTracks, char *superTrackName)
+/* Turn on a supertrack if any of the subtracks are not hidden.  ASSUMES ALL TRACKS ARE HIDDEN
+ * by default.
+ */
+{
+boolean cartTurnOnSuper = FALSE;
+int ii;
+
+// go through all the tracks moved into the supertrack
+for(ii = 0; ii < numTracks; ii++)
+    {
+    char *vis = cartOptionalString(cart, trackNames[ii]);
+
+    if (vis)
+        {
+        if (differentString(vis, "hide"))
+            {
+            // Turn on the super track since one of its subtracks was visible before
+            cartTurnOnSuper = TRUE;
+            break;
+            }
+        }
+    }
+
+if (cartTurnOnSuper)
+    cartSetString(cart, superTrackName, "show");
+}