84440373a2ad67b39c36c614687807bda9a423b2
tdreszer
  Wed Sep 29 11:12:37 2010 -0700
Added definition of multiTrack and changed container to be either multiTrack or Composite.  This allows multiTracks (such as multiWigs) to behave as composites in some code paths.
diff --git src/hg/hgTracks/searchTracks.c src/hg/hgTracks/searchTracks.c
index c9d52dd..63c575a 100644
--- src/hg/hgTracks/searchTracks.c
+++ src/hg/hgTracks/searchTracks.c
@@ -47,17 +47,17 @@
 const struct slRef *bb = *((struct slRef **)vb);
 const struct track *a = ((struct track *) aa->val);
 const struct track *b = ((struct track *) bb->val);
-     if ( tdbIsSuperTrack(a->tdb) && !tdbIsSuperTrack(b->tdb))
+     if ( tdbIsFolder(a->tdb) && !tdbIsFolder(b->tdb))
         return -1;
-else if (!tdbIsSuperTrack(a->tdb) &&  tdbIsSuperTrack(b->tdb))
+else if (!tdbIsFolder(a->tdb) &&  tdbIsFolder(b->tdb))
         return 1;
-     if ( tdbIsComposite(a->tdb) && !tdbIsComposite(b->tdb))
+     if ( tdbIsContainer(a->tdb) && !tdbIsContainer(b->tdb))
         return -1;
-else if (!tdbIsComposite(a->tdb) &&  tdbIsComposite(b->tdb))
+else if (!tdbIsContainer(a->tdb) &&  tdbIsContainer(b->tdb))
         return 1;
-     if (!tdbIsCompositeChild(a->tdb) &&  tdbIsCompositeChild(b->tdb))
+     if (!tdbIsContainerChild(a->tdb) &&  tdbIsContainerChild(b->tdb))
         return -1;
-else if ( tdbIsCompositeChild(a->tdb) && !tdbIsCompositeChild(b->tdb))
+else if ( tdbIsContainerChild(a->tdb) && !tdbIsContainerChild(b->tdb))
         return 1;
 return strcasecmp(a->longLabel, b->longLabel);
 }
@@ -536,7 +536,7 @@
         for(tsList = trixSearch(trix, descWordCount, descWords, TRUE); tsList != NULL; tsList = tsList->next)
             {
             struct track *track = (struct track *) hashFindVal(trackHash, tsList->itemId);
-            if (track != NULL && !tdbIsContainerChild(track->tdb)) // NOTE: Not including container children, since they don't seem to be individually viewaable
+            if (track != NULL)
                 {
                 refAdd(&tracks, track);
                 tracksFound++;
@@ -703,45 +703,38 @@
         jsonTdbSettingsBuild(&jsonTdbVars, track);
 
         #ifdef SORT_BY_HIERARCHY
-        if (tdbIsSuperTrack(track->tdb))
+        if (tdbIsFolder(track->tdb)) // supertrack
             hPrintf("<tr bgcolor='%s' valign='top' class='found'>\n",COLOR_TRACKLIST_LEVEL1);
-        if (tdbIsComposite(track->tdb))
+        if (tdbIsContainer(track->tdb))
             hPrintf("<tr bgcolor='%s' valign='top' class='found'>\n",COLOR_TRACKLIST_LEVEL3);
         else
         #endif///def SORT_BY_HIERARCHY
             hPrintf("<tr bgcolor='%s' valign='top' class='found'>\n",COLOR_TRACKLIST_LEVEL2);
 
         hPrintf("<td align='center'>\n");
-        char name[256];
-        safef(name,sizeof(name),"%s_sel",track->track);
-        boolean checked = FALSE;
-        #define CB_HIDDEN_VAR "<INPUT TYPE=HIDDEN disabled=true NAME='%s_sel' VALUE='%s'>"
-        if(tdbIsContainerOrCompositeChild(track->tdb))
+
+        // Determine visibility and checked state
+        track->visibility = tdbVisLimitedByAncestry(cart, track->tdb, FALSE);
+        boolean checked = ( track->visibility != tvHide );
+        if(tdbIsContainerChild(track->tdb))
             {
-            checked = fourStateVisible(subtrackFourStateChecked(track->tdb,cart)); // Don't need all 4 states here.  Visible=checked&&enabled
             //track->visibility = limitedVisFromComposite(track);
-            track->visibility = tdbVisLimitedByAncestry(cart, track->tdb, FALSE);
-
+            checked = fourStateVisible(subtrackFourStateChecked(track->tdb,cart)); // Don't need all 4 states here.  Visible=checked&&enabled
             checked = (checked && ( track->visibility != tvHide )); // Checked is only if subtrack level vis is also set!
-            // Only subtracks get "_sel" var
-            hPrintf(CB_HIDDEN_VAR,track->track,checked?"1":CART_VAR_EMPTY);
-            }
-        else
-            {
-            track->visibility = tdbVisLimitedByAncestry(cart, track->tdb, FALSE);
-            checked = ( track->visibility != tvHide );
-            if (tdbIsSuperTrackChild(track->tdb))
-                hPrintf(CB_HIDDEN_VAR,track->track,checked?"1":CART_VAR_EMPTY);
             }
 
+        // Setup the check box
+        #define CB_HIDDEN_VAR "<INPUT TYPE=HIDDEN disabled=true NAME='%s_sel' VALUE='%s'>"
+        if (tdbIsContainerChild(track->tdb) || tdbIsFolderContent(track->tdb))  // subtracks and folder children get "_sel" var.  ("_sel" var is temporary on folder children)
+            hPrintf(CB_HIDDEN_VAR,track->track,checked?"1":CART_VAR_EMPTY);
         #define CB_SEEN "<INPUT TYPE=CHECKBOX id='%s_sel_id' VALUE='on' class='selCb' onclick='findTracksClickedOne(this,true);'%s>"
         hPrintf(CB_SEEN,track->track,(checked?" CHECKED":""));
-
         hPrintf("</td><td>\n");
 
+        // Setup the visibility drop down
         #define VIS_HIDDEN_VAR "<INPUT TYPE=HIDDEN disabled=true NAME='%s' VALUE='%s'>"
         hPrintf(VIS_HIDDEN_VAR,track->track,CART_VAR_EMPTY); // All tracks get vis hidden var
-        if (tdbIsSuper(track->tdb))
+        if (tdbIsFolder(track->tdb))
             {
             // FIXME: Replace this with select box WITHOUT NAME but with id
             // HOWEVER, I haven't seen a single supertrack in found tracks so I think they are excluded and this is dead code
@@ -756,13 +749,13 @@
             }
 
         // If this is a container track, allow configuring...
-        if (tdbIsContainerOrComposite(track->tdb) || tdbIsSuper(track->tdb))
+        if (tdbIsContainer(track->tdb) || tdbIsFolder(track->tdb))
             {
             containerTrackCount++;
             hPrintf("&nbsp;<a href='hgTrackUi?db=%s&g=%s&hgt_searchTracks=1' title='Configure this container track...'>*</a>&nbsp;",database,track->track);
             }
         hPrintf("</td>\n");
-        //if(tdbIsSuper(track->tdb) || tdbIsComposite(track->tdb))
+        //if(tdbIsContainer(track->tdb) || tdbIsFolder(track->tdb))
         //    hPrintf("<td><a target='_top' href='%s' title='Configure track...'>%s</a></td>\n", trackUrl(track->track, NULL), track->shortLabel);
         //else
             hPrintf("<td><a target='_top' onclick=\"hgTrackUiPopUp('%s',true); return false;\" href='%s' title='Display track details'>%s</a></td>\n", track->track, trackUrl(track->track, NULL), track->shortLabel);