9e30a2e3bce0cdb1bb4c4a0ddbd3325dfe9703ec
braney
  Wed May 10 18:20:11 2017 -0700
fix bug in handling of composites with views

diff --git src/hg/hgComposite/hgComposite.c src/hg/hgComposite/hgComposite.c
index 5e34817..8850a60 100644
--- src/hg/hgComposite/hgComposite.c
+++ src/hg/hgComposite/hgComposite.c
@@ -660,72 +660,70 @@
 //selectVariants();
 //char *geneTrack = selectGenes();
 //if (geneTrack != NULL)
     {
     //selectRegulatory();
     //selectAnnotations(geneTrack);
     //selectFilters();
     //selectOutput();
     //submitAndDisclaimer();
     }
 
 printf("</FORM>");
 jsReloadOnBackButton(cart);
 
 webNewSection("Using the Composite Builder");
-webIncludeHelpFileSubst("hgCompositeHelp", cart, FALSE);
+webIncludeHelpFileSubst("hgCompositeHelp", NULL, FALSE);
 jsIncludeFile("jquery-ui.js", NULL);
 jsIncludeFile("hgVarAnnogrator.js", NULL);
 jsIncludeFile("ui.dropdownchecklist.js", NULL);
 jsIncludeFile("ddcl.js", NULL);
 }
 
 
 
 
 
 
 void doUi(char *db, struct grp *groupList, struct trackDb *fullTrackList,struct composite *currentComposite, struct composite *compositeList) 
 /* Set up globals and make web page */
 {
 cartWebStart(cart, db, "Composite Editor");
 doMainPage(database, groupList, fullTrackList, currentComposite, compositeList);
 cartWebEnd();
 /* Save variables. */
 //cartCheckout(&cart);
 }
 
-static struct hash *addWigs(struct trackDb **wigList, struct trackDb *list)
+static void addWigs(struct hash *hash, struct trackDb **wigList, struct trackDb *list)
 {
-struct hash *hash = newHash(4);
 if (list == NULL)
-    return hash;
+    return;
 
 struct trackDb *tdb, *tdbNext;
 for(tdb = list; tdb; tdb = tdbNext)
     {
     tdbNext = tdb->next;
-    addWigs(wigList, tdb->subtracks);
+    addWigs(hash, wigList, tdb->subtracks);
 
     if (trackCanBeAdded(tdb))
         {
         slAddHead(wigList, tdb);
         hashStore(hash, tdb->grp);
         }
     }
 
-return hash;
 }
 
 char *makeUnique(struct hash *nameHash, struct trackDb *tdb)
 {
 if (hashLookup(nameHash, tdb->track) == NULL)
     {
     hashAdd(nameHash, tdb->track, tdb);
     return tdb->track;
     }
 
 unsigned count = 0;
 char buffer[4096];
 
 for(;; count++)
     {
@@ -772,31 +770,32 @@
 oldVars = hashNew(10);
 cart = cartAndCookie(hUserCookie(), excludeVars, oldVars);
 
 /* Set up global variables. */
 getDbAndGenome(cart, &database, &genome, oldVars);
 initGenbankTableNames(database);
 
 int timeout = cartUsualInt(cart, "udcTimeout", 300);
 if (udcCacheTimeout() < timeout)
     udcSetCacheTimeout(timeout);
 knetUdcInstall();
 
 struct trackDb *fullTrackList = NULL;	/* List of all tracks in database. */
 struct trackDb *wigTracks = NULL;	/* List of all wig tracks */
 cartTrackDbInit(cart, &fullTrackList, &fullGroupList, TRUE);
-struct hash *groupHash = addWigs(&wigTracks, fullTrackList);
+struct hash *groupHash = newHash(5);
+addWigs(groupHash, &wigTracks, fullTrackList);
 struct grp *grp, *grpNext,  *groupList = NULL;
 
 for(grp = fullGroupList; grp; grp = grpNext)
     {
     grpNext = grp->next;
     if (hashLookup(groupHash, grp->name) != NULL)
         slAddHead(&groupList, grp);
     }
 
 slReverse(&groupList);
 
 /*
 struct grp *grpList;
 struct trackDb *tdbList = hubCollectTracks(database, &grpList);
 addWigs(&wigTracks, tdbList);