6e57bd7dddafb83f609a22cba99c47c97fb506d9
tdreszer
Thu Sep 9 09:09:18 2010 -0700
hgTrackUi can now use ajax to update composite/view settings, which enables keeping subtrack level v. composite/view level settings properly influencing each other. That is, timing is important in ensuring that composite/view level changes overrides subtrack level settings. The triggers for this code in hui.c are all ifdef'd on SUBTRACK_CFG_POPUP.
diff --git src/hg/cartDump/cartDump.c src/hg/cartDump/cartDump.c
index 7597a3f..d273e90 100644
--- src/hg/cartDump/cartDump.c
+++ src/hg/cartDump/cartDump.c
@@ -1,102 +1,114 @@
/* cartDump - Dump contents of cart. */
#include "common.h"
#include "linefile.h"
#include "hash.h"
#include "cheapcgi.h"
#include "cart.h"
+#include "hdb.h"
#include "jsHelper.h"
#include "hui.h"
static char const rcsid[] = "$Id: cartDump.c,v 1.14 2008/12/09 00:41:20 angie Exp $";
#define CART_DUMP_REMOVE_VAR "n/a"
+struct hash *oldVars = NULL;
void doMiddle(struct cart *cart)
/* cartDump - Dump contents of cart. */
{
#define MATCH_VAR "match"
char *vName = "cartDump.varName";
char *vVal = "cartDump.newValue";
char *wildcard;
boolean asTable = cartVarExists(cart,CART_DUMP_AS_TABLE);
if (cgiVarExists("submit"))
{
char *varName = cgiOptionalString(vName);
char *newValue = cgiOptionalString(vVal);
if (isNotEmpty(varName) && isNotEmpty(newValue))
{
varName = skipLeadingSpaces(varName);
eraseTrailingSpaces(varName);
if (sameString(newValue, CART_DUMP_REMOVE_VAR) || sameString(newValue, CART_VAR_EMPTY))
cartRemove(cart, varName);
else
cartSetString(cart, varName, newValue);
}
cartRemove(cart, vVal);
cartRemove(cart, "submit");
}
if (cgiVarExists("noDisplay"))
{
+ char *trackName = cgiOptionalString("g");
+ if(trackName != NULL && hashNumEntries(oldVars) > 0)
+ {
+ char *db = cartString(cart, "db");
+ struct trackDb *tdb = hTrackDbForTrack(db, trackName);
+ if(tdb != NULL && tdbIsComposite(tdb))
+ cartTdbTreeCleanupOverrides(tdb,cart,oldVars);
+ }
+
return;
}
if (asTable)
{
jsIncludeFile("utils.js",NULL);
jsIncludeFile("ajax.js",NULL);
printf("Show as plain text.
",CART_DUMP_AS_TABLE);
printf("
"); wildcard = cgiOptionalString(MATCH_VAR); if (wildcard) cartDumpLike(cart, wildcard); else cartDump(cart); printf(""); if (!asTable) { printf("\n"); } printf("
Cookies passed to %s:
\n%s\n