397ef4cb75a35e5563e1be6e9cbc131893e8acc4
kate
  Fri Jan 31 13:44:27 2014 -0800
Add UI checkbox to suppress display of cell abbreviations.
diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c
index e1296c5..f16c3bc 100644
--- src/hg/hgTrackUi/hgTrackUi.c
+++ src/hg/hgTrackUi/hgTrackUi.c
@@ -2476,47 +2476,64 @@
     valueArr[refCount++] = cloneString(pmId);
     if (! filterPmIdInCart)
 	slNameAddHead(&checked, pmId);
     if (refCount >= MAX_DGV_REFS)
 	errAbort("dgvUi: %s has too many references (max %d)", tdb->track, MAX_DGV_REFS);
     }
 sqlFreeResult(&sr);
 jsMakeCheckboxGroupSetClearButton(cartVarName, TRUE);
 jsMakeCheckboxGroupSetClearButton(cartVarName, FALSE);
 cgiMakeCheckboxGroupWithVals(cartVarName, labelArr, valueArr, refCount, checked, 4);
 hFreeConn(&conn);
 }
 
 static void factorSourceUi(char *db, struct trackDb *tdb)
 {
-if (trackDbSetting(tdb, "motifTable") != NULL)
-    {
-    char varName[64];
-    printf("<BR><B>Highlight motifs: </B> ");
-    safef(varName, sizeof(varName), "%s.highlightMotifs", tdb->track);
-    cartMakeCheckBox(cart, varName, trackDbSettingClosestToHomeOn(tdb, "motifDrawDefault"));
-    }
 // Multi-select filter on factors
 // NOTE: doesn't currently support track type in composites
 filterBy_t *filters = filterBySetGet(tdb, cart, tdb->track);
-if (filters == NULL)
-    return;
+if (filters != NULL)
+    {
     puts("<p>");
     filterBySetCfgUi(cart, tdb, filters, TRUE);
     filterBySetFree(&filters);
     }
 
+char varName[64];
+printf("<BR><B>Show cell abbreviations (to right of cluster): </B> ");
+safef(varName, sizeof(varName), "%s.showCellAbbrevs", tdb->track);
+cartMakeCheckBox(cart, varName, TRUE);
+
+puts("<p><table>");
+jsBeginCollapsibleSectionFontSize(cart, tdb->track, "cellSources", "Cell Abbreviations", FALSE,
+                                        "medium");
+struct sqlConnection *conn = hAllocConn(db);
+hPrintFactorSourceAbbrevTable(conn, tdb);
+jsEndCollapsibleSection();
+puts("</table>");
+hFreeConn(&conn);
+
+
+
+if (trackDbSetting(tdb, "motifTable") != NULL)
+    {
+    printf("<BR><B>Highlight motifs: </B> ");
+    safef(varName, sizeof(varName), "%s.highlightMotifs", tdb->track);
+    cartMakeCheckBox(cart, varName, trackDbSettingClosestToHomeOn(tdb, "motifDrawDefault"));
+    }
+}
+
 #ifdef UNUSED
 static boolean isInTrackList(struct trackDb *tdbList, struct trackDb *target)
 /* Return TRUE if target is in tdbList. */
 {
 struct trackDb *tdb;
 for (tdb = tdbList; tdb != NULL; tdb = tdb->next)
     if (tdb == target)
         return TRUE;
 return FALSE;
 }
 #endif /* UNUSED */
 
 void superTrackUi(struct trackDb *superTdb, struct trackDb *tdbList)
 /* List tracks in this collection, with visibility controls and UI links */
 {