ec6300a5b8e9b70968f7657becefb23ef9b23021
markd
  Sun May 31 21:30:43 2015 -0700
support setting transMap track default item labeling in trackDb (#15440)

diff --git src/hg/hgTracks/transMapTracks.c src/hg/hgTracks/transMapTracks.c
index b41a7f4..c490bca 100644
--- src/hg/hgTracks/transMapTracks.c
+++ src/hg/hgTracks/transMapTracks.c
@@ -18,64 +18,58 @@
 if (val != NULL)
     {
     if (label->stringSize > 0)
         dyStringAppendC(label, ' ');
     dyStringAppend(label, val);
     }
 }
 
 /* bit set of labels to use */
 enum {useOrgCommon = 0x01,
       useOrgAbbrv  = 0x02,
       useOrgDb     = 0x04,
       useGene      = 0x08,
       useAcc       = 0x10};
 
+static boolean isLabelTypeEnabled(struct track *tg, char *labelNameSuffix,
+                                  boolean defaultVal) 
+/* determine if a particular type of label is enabled for this track.
+ * check cart, settings, and then use default.
+ */
+{
+/* some how the closest to home magic prepends the track name for cart  */
+char settingName[64];
+safef(settingName, sizeof(settingName), "label.%s", labelNameSuffix);
+fprintf(stderr, "%s\n", tg->tdb->settings);
+return cartOrTdbBoolean(cart, tg->tdb, settingName, defaultVal);
+}
+
 static unsigned getLabelTypes(struct track *tg)
 /* get set of labels to use */
 {
 unsigned labelSet = 0;
 
-// label setting are on parent track
-char prefix[128];
-safef(prefix, sizeof(prefix), "%s.label", tg->tdb->track);
-struct hashEl *labels = cartFindPrefix(cart, prefix);
-
-if (labels == NULL)
-    {
-    // default to common name+accession and save this in cart so it makes sense in trackUi
-    labelSet = useOrgCommon|useAcc;
-    char setting[64];
-    safef(setting, sizeof(setting), "%s.label.acc", tg->tdb->track);
-    cartSetBoolean(cart, setting, TRUE);
-    safef(setting, sizeof(setting), "%s.label.orgCommon", tg->tdb->track);
-    cartSetBoolean(cart, setting, TRUE);
-    }
-struct hashEl *label;
-for (label = labels; label != NULL; label = label->next)
-    {
-    if (endsWith(label->name, ".orgCommon") && differentString(label->val, "0"))
+if (isLabelTypeEnabled(tg, "orgCommon", transMapLabelDefaultOrgCommon))
     labelSet |= useOrgCommon;
-    else if (endsWith(label->name, ".orgAbbrv") && differentString(label->val, "0"))
+if (isLabelTypeEnabled(tg, "orgAbbrv", transMapLabelDefaultOrgAbbrv))
     labelSet |= useOrgAbbrv;
-    else if (endsWith(label->name, ".db") && differentString(label->val, "0"))
+if (isLabelTypeEnabled(tg, "db", transMapLabelDefaultDb))
     labelSet |= useOrgDb;
-    else if (endsWith(label->name, ".gene") && differentString(label->val, "0"))
+if (isLabelTypeEnabled(tg, "gene", transMapLabelDefaultGene))
     labelSet |= useGene;
-    else if (endsWith(label->name, ".acc") && differentString(label->val, "0"))
+if (isLabelTypeEnabled(tg, "acc", transMapLabelDefaultAcc))
     labelSet |= useAcc;
-    }
 return labelSet;
 }
 
 static void getItemLabel(struct sqlConnection *conn, char *transMapInfoTbl, 
                          struct sqlConnection *geneConn, char *transMapGeneTbl,
                          unsigned labelSet,
                          struct linkedFeatures *lf)
 /* get label for a transMap item */
 {
 struct transMapInfo *info = NULL;
 struct transMapGene *gene = NULL;
 boolean srcDbExists = FALSE;
 if (labelSet & (useOrgCommon|useOrgAbbrv|useOrgDb|useGene))
     {
     info = transMapInfoQuery(conn, transMapInfoTbl, lf->name);