f31b0c7755da1ffe944a89e1d0a572eafa135ea7
angie
  Mon Jan 26 15:48:43 2015 -0800
Add yet another special case for all_* tables.

diff --git src/hg/hgAi/hgAi.c src/hg/hgAi/hgAi.c
index d15ddaf..9f9b78a 100644
--- src/hg/hgAi/hgAi.c
+++ src/hg/hgAi/hgAi.c
@@ -78,48 +78,53 @@
 static void getFields(struct cartJson *cj, struct hash *paramHash)
 /* Print out the fields of the tables in comma-sep tables param. */
 {
 char *tableStr = cartJsonRequiredParam(paramHash, "tables", cj->jw, "getFields");
 if (! tableStr)
     return;
 
 char *db = cartString(cart, "db");
 struct slName *table, *tables = slNameListFromComma(tableStr);
 jsonWriteObjectStart(cj->jw, "tableFields");
 struct trackDb *fullTrackList = NULL;
 struct grp *fullGroupList = NULL;
 cartTrackDbInit(cj->cart, &fullTrackList, &fullGroupList, /* useAccessControl= */TRUE);
 for (table = tables;  table != NULL;  table = table->next)
     {
-    struct trackDb *tdb = tdbForTrack(NULL, table->name, &fullTrackList);
+    char *tableName = table->name;
+    if (startsWith("all_", tableName))
+        tableName += strlen("all_");
+    struct trackDb *tdb = tdbForTrack(NULL, tableName, &fullTrackList);
     if (tdb)
         {
         struct asObject *asObj = hAnnoGetAutoSqlForTdb(db, hDefaultChrom(db), tdb);
         if (asObj)
             {
             jsonWriteObjectStart(cj->jw, table->name);
             char label[strlen(tdb->shortLabel) + strlen(table->name) + PATH_LEN];
             makeTrackLabel(tdb, table->name, label, sizeof(label));
             jsonWriteString(cj->jw, "label", label);
             jsonWriteListStart(cj->jw, "fields");
             struct asColumn *col;
             for (col = asObj->columnList;  col != NULL;  col = col->next)
                 jsonWriteString(cj->jw, NULL, col->name);
             jsonWriteListEnd(cj->jw);
             jsonWriteObjectEnd(cj->jw);
             }
         }
+    else
+        warn("No tdb for %s", table->name);
     }
 jsonWriteObjectEnd(cj->jw);
 slFreeList(&tables);
 }
 
 void doCartJson()
 /* Perform UI commands to update the cart and/or retrieve cart vars & metadata. */
 {
 struct cartJson *cj = cartJsonNew(cart);
 cartJsonRegisterHandler(cj, "changeDb", changeDb);
 cartJsonRegisterHandler(cj, "changeOrg", changeOrg);
 cartJsonRegisterHandler(cj, "changeClade", changeClade);
 cartJsonRegisterHandler(cj, "getFields", getFields);
 cartJsonExecute(cj);
 }