30f24c3014f7c5157e304ec6f513cfb99647a04a
braney
  Fri Apr 19 17:08:44 2013 -0700
order assemblies by orderKey in gateway drop-down.
diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c
index ec1f5a8..67da836 100644
--- src/hg/lib/trackHub.c
+++ src/hg/lib/trackHub.c
@@ -107,30 +107,31 @@
 
 return cloneString(ret);
 }
 
 static struct dbDb *makeDbDbFromAssemblyGenome(struct trackHubGenome *hubGenome)
 /* Make a dbdb struture from a single assembly hub database. */
 {
 struct dbDb *db;
 
 AllocVar(db);
 db->genome = cloneString(hubGenome->organism);
 db->organism = cloneString(hubGenome->organism);
 db->name = cloneString(hubGenome->name);
 db->active = TRUE;
 db->description = cloneString(hubGenome->description);
+db->orderKey = sqlUnsigned(hashFindVal(hubGenome->settingsHash, "orderKey"));
 
 return db;
 }
 
 struct dbDb *trackHubDbDbFromAssemblyDb(char *database)
 /* Return a dbDb structure for just this database. */
 {
 if (hubAssemblyHash == NULL)
     errAbort("requesting hub assembly dbDb with no hubs loaded");
 struct hashEl *hel = hashLookup(hubAssemblyHash, database);
 if (hel == NULL)
     return NULL;
 
 struct trackHubGenome *genome = hel->val;
 return makeDbDbFromAssemblyGenome(genome);
@@ -171,30 +172,32 @@
 	if ((clade != NULL) && differentString(clade, trackHub->name))
 	    continue;
 
 	struct trackHubGenome *hubGenome = trackHub->genomeList;
 	for(; hubGenome; hubGenome = hubGenome->next)
 	    {
 	    if (hubGenome->twoBitPath != NULL)
 		{
 		db = makeDbDbFromAssemblyGenome(hubGenome);
 		slAddHead(&dbList, db);
 		}
 	    }
 	}
     }
 
+slSort(&dbList, hDbDbCmpOrderKey);
+slReverse(&dbList);
 return dbList;
 }
 
 int trackHubChromCount(char *database)
 /* Return number of chromosomes in a assembly data hub. */
 {
 struct hashEl *hel = hashLookup(hubAssemblyHash, database);
 if (hel == NULL)
     return 0;
 
 struct trackHubGenome *genome = hel->val;
 struct slName *chromList = twoBitSeqNames(genome->twoBitPath);
 
 int num = slCount(chromList);
 slFreeList(&chromList);