f8de331fce87ec0df45e71399f7450c0dd69d189
braney
  Sat May 6 17:31:44 2017 -0700
on going work on custom composites

diff --git src/hg/hgComposite/hgComposite.c src/hg/hgComposite/hgComposite.c
index bfe17c0..5c56e32 100644
--- src/hg/hgComposite/hgComposite.c
+++ src/hg/hgComposite/hgComposite.c
@@ -156,31 +156,30 @@
 
 static struct composite *getCompositeList(char *db, char *hubName, struct hash *nameHash)
 {
 struct composite *compositeList = NULL;
 
 if (hubName != NULL)
     {
     // read hub to find names of composites and add them to compositeList
     struct trackDb *tdbList = trackDbFromRa(hubName, NULL);
     struct trackDb *tdb, *tdbNext;
     struct composite *composite = NULL;
     struct track *track = NULL;
 
     for(tdb = tdbList; tdb; tdb = tdbNext)
         {
-        printf("adding %s\n", tdb->track);
         hashAdd(nameHash, tdb->track, tdb);
         tdbNext = tdb->next;
         trackDbFieldsFromSettings(tdb);
         if (trackDbSetting(tdb, "compositeTrack"))
             {
             AllocVar(composite);
             slAddHead(&compositeList, composite);
             composite->name = tdb->track;
             composite->shortLabel = tdb->shortLabel;
             }
         else
             {
             if (composite == NULL)
                 errAbort("track not in composite");
             AllocVar(track);
@@ -235,33 +234,34 @@
 fprintf(f, "\tparent %s\n",parent);
 fprintf(f, "\tcolor %d,%d,%d\n", (color >> 16) & 0xff,(color >> 8) & 0xff,color & 0xff);
 fprintf(f, "\n");
 }
 
 static void outComposite(FILE *f, struct composite *composite)
 {
 char *parent = composite->name;
 char *shortLabel = composite->name;
 char *longLabel = composite->name;
 fprintf(f,"track %s\n\
 shortLabel %s\n\
 compositeTrack on\n\
 aggregate none\n\
 longLabel %s\n\
+%s on\n\
 #container multiWig\n\
 type wig \n\
-visibility full\n\n", parent, shortLabel, longLabel);
+visibility full\n\n", parent, shortLabel, longLabel, CUSTOM_COMPOSITE_SETTING);
 }
 
 static struct trackDb *findTrack(char *name, struct trackDb *fullTrackList)
 {
 struct trackDb *tdb;
 for (tdb = fullTrackList; tdb != NULL; tdb = tdb->next)
     {
     if (sameString(name, tdb->track))
         return tdb;            
     }
 errAbort("cannot find track");
 return NULL;
 }
 
 static void outHubHeader(FILE *f, char *db, char *hubName)
@@ -275,32 +275,31 @@
 email braney@soe.ucsc.edu\n\
 descriptionUrl hub.html\n\n", hubFile);
 fprintf(f,"genome %s\n\
 trackDb %s\n\n", db, hubFile);
 }
 
 static char *getHubName(char *db)
 {
 struct tempName hubTn;
 char buffer[4096];
 safef(buffer, sizeof buffer, "%s-%s", customCompositeCartName, db);
 char *hubName = cartOptionalString(cart, buffer);
 
 if (hubName == NULL)
     {
-    //trashDirDateFile(&hubTn, "hgComposite", "hub", ".txt");
-    trashDirDateFile(&hubTn, "brTest", "hub", ".txt");
+    trashDirDateFile(&hubTn, "hgComposite", "hub", ".txt");
     hubName = cloneString(hubTn.forCgi);
     cartSetString(cart, buffer, hubName);
     FILE *f = mustOpen(hubName, "a");
     outHubHeader(f, db, hubName);
     fclose(f);
     cartSetString(cart, "hubUrl", hubName);
     cartSetString(cart, hgHubConnectRemakeTrackHub, hubName);
     }
 return hubName;
 }
 
 
 //static void outputCompositeHub(char *db, char *hubName, struct trackDb *fullTrackList, struct composite *compositeList, struct hash *nameHash)
 static void outputCompositeHub(char *db, char *hubName,  struct composite *compositeList, struct hash *nameHash)
 {
@@ -695,44 +694,42 @@
 
     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)
     {
-    printf("adding %s\n", tdb->track);
     hashAdd(nameHash, tdb->track, tdb);
     return tdb->track;
     }
 
 unsigned count = 0;
 char buffer[4096];
 
 for(;; count++)
     {
     safef(buffer, sizeof buffer, "%s%d", tdb->track, count);
     if (hashLookup(nameHash, buffer) == NULL)
         {
-        printf("adding %s\n", buffer);
         hashAdd(nameHash, buffer, tdb);
         return cloneString(buffer);
         }
     }
 
 return NULL;
 }
 
 int main(int argc, char *argv[])
 /* Process command line. */
 {
 long enteredMainTime = clock1000();
 if (hIsPrivateHost())
     pushCarefulMemHandler(LIMIT_2or6GB);
 
@@ -765,31 +762,30 @@
 
 slReverse(&groupList);
 
 /*
 struct grp *grpList;
 struct trackDb *tdbList = hubCollectTracks(database, &grpList);
 addWigs(&wigTracks, tdbList);
 */
 
 char *hubName = getHubName(database);
 struct hash *nameHash = newHash(5);
 struct composite *compositeList = getCompositeList(database, hubName, nameHash);
 
 struct composite *currentComposite = NULL;
 char *currentCompositeName = cartOptionalString(cart, hgsCurrentComposite);
-printf("currentcomposite name %s\n", currentCompositeName);
 
 if (currentCompositeName != NULL)
     {
     for (currentComposite = compositeList; currentComposite; currentComposite = currentComposite->next)
         if (sameString(currentComposite->name, currentCompositeName))
             break;
     }
 
 if (currentComposite == NULL)
     currentComposite = compositeList;
 
 char *newCompositeName = cartOptionalString(cart, hgsNewCompositeName);
 if (newCompositeName != NULL)
     {
     if (isEmpty(newCompositeName))