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);