3c460f56a582ae4fe383b219f7d0715c7f0092f3
kent
  Sun Jan 9 10:55:01 2011 -0800
Fixing subtrack sorting problem in composite tracks in track hub.
diff --git src/hg/lib/hdb.c src/hg/lib/hdb.c
index 24f21eb..f863c3d 100644
--- src/hg/lib/hdb.c
+++ src/hg/lib/hdb.c
@@ -3366,36 +3366,43 @@
     if (loadOneTrackDb(db, where, one->name, &tdbList, loaded))
         foundOne = TRUE;
     }
 if (!foundOne)
     errAbort("can not find any trackDb tables for %s, check db.trackDb specification in hg.conf",
              db);
 slNameFreeList(&tableList);
 hashFree(&loaded);
 
 /* fill in supertrack fields, if any in settings */
 trackDbSuperMarkup(tdbList);
 trackDbAddTableField(tdbList);
 return tdbList;
 }
 
+static boolean trackDataAccessible(char *database, struct trackDb *tdb)
+/* Return TRUE if data accessible - meaning either it has a bigDataUrl, or the
+ * table exists. */
+{
+return trackDbSetting(tdb, "bigDataUrl") != NULL || hTableForTrack(database, tdb->table) != NULL;
+}
+
 static void addTrackIfDataAccessible(char *database, struct trackDb *tdb,
 	       boolean privateHost, struct trackDb **tdbRetList)
 /* check if a trackDb entry should be included in display, and if so
  * add it to the list, otherwise free it */
 {
-if ((!tdb->private || privateHost) && hTableForTrack(database, tdb->table) != NULL)
+if ((!tdb->private || privateHost) && trackDataAccessible(database, tdb))
     slAddHead(tdbRetList, tdb);
 else if (sameWord(tdb->type,"downloadsOnly"))
     {
     if (sameString(tdb->table,tdb->track))
         tdb->table = NULL;
     slAddHead(tdbRetList, tdb);
     }
 else
     trackDbFree(&tdb);
 }
 
 #ifdef UNUSED
 static void inheritFieldsFromParents(struct trackDb *tdb, struct trackDb *parent)
 /* Inherit undefined fields (outside of settings) from parent. */
 {