6452a01362d66b305bfda62b217901d0da0c587f braney Fri Nov 1 11:00:59 2024 -0700 add cart rewrite for decipher tracks moving into supertrack diff --git src/hg/cgilib/cartRewrite.c src/hg/cgilib/cartRewrite.c index 2de670d..3ab4960 100644 --- src/hg/cgilib/cartRewrite.c +++ src/hg/cgilib/cartRewrite.c @@ -1,92 +1,94 @@ /* 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 kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */ #include "common.h" #include "cart.h" #include "hgConfig.h" void cartEdit0(struct cart *cart); void cartEdit1(struct cart *cart); void cartEdit2(struct cart *cart); void cartEdit3(struct cart *cart); void cartEdit4(struct cart *cart); void cartEdit5(struct cart *cart); +void cartEdit6(struct cart *cart); struct cartRewrite { void (*func)(struct cart *cart); }; // Here's the list of cart rewrite functions static struct cartRewrite cartRewrites[] = { { cartEdit0}, { cartEdit1}, { cartEdit2}, { cartEdit3}, { cartEdit4}, { cartEdit5}, +{ cartEdit6}, }; void cartRewrite(struct cart *cart, unsigned trackDbCartVersion, unsigned cartVersion) /* Rewrite the cart to update it to expectations of trackDb. */ { if (sameString(cfgOptionDefault("cartVersion", "on"), "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"); } void cartMatchValue(struct cart *cart, char *oldTrackName, char *newTrackName) /* Make new track have the same visibility as an old track */ { char *vis = cartOptionalString(cart, oldTrackName); if (vis) cartSetString(cart, newTrackName, vis); }