c4f955645d376e77f358e545b36fbdefdc8ab8ce markd Thu Mar 22 18:19:49 2018 -0700 make sure gencode label is set on first switch from old cart (rm21157) diff --git src/hg/hgTracks/gencodeTracks.c src/hg/hgTracks/gencodeTracks.c index 78e820e..6a447ff 100644 --- src/hg/hgTracks/gencodeTracks.c +++ src/hg/hgTracks/gencodeTracks.c @@ -452,60 +452,68 @@ safef(varSuffix, sizeof(varSuffix), "label.%s", labelName); char *value = cartUsualStringClosestToHome(cart, tg->tdb, FALSE, varSuffix, NULL); if (value != NULL) *anyExistsP = TRUE; return ((value != NULL) && !sameString(value, "0")); } static void setLabelCartVar(struct track *tg, char *labelName, boolean value) /* set one of the label type cart variables. */ { char varName[256]; safef(varName, sizeof(varName), "%s.label.%s", tg->track, labelName); cartSetBoolean(cart, varName, value); } -static void setFromOldLabelsVarsInCart(struct track *tg) +static unsigned setFromOldLabelsVarsInCart(struct track *tg) /* If the old gencode label variable are set for this track, migrate to the new * variable. This prevents labels from disappearing with the new old and an old cart. */ { // logic from simpleTracks.c:genePredAssignConfiguredName() +unsigned enabledLabels = 0; char *geneLabel = cartUsualStringClosestToHome(cart, tg->tdb, FALSE, "label", "gene"); if (sameString(geneLabel, "gene") || sameString(geneLabel, "name") || sameString(geneLabel, "both")) + { setLabelCartVar(tg, "geneName", TRUE); + enabledLabels |= ITEM_LABEL_GENE_NAME; + } if (sameString(geneLabel, "accession") || sameString(geneLabel, "both")) + { setLabelCartVar(tg, "transcriptId", TRUE); + enabledLabels |= ITEM_LABEL_TRANSCRIPT_ID; + } cartRemoveVariableClosestToHome(cart, tg->tdb, FALSE, "label"); +return enabledLabels; } static unsigned getEnabledLabels(struct track *tg) /* Look up each of the label type names in the cart to see if they are enabled, * Return bit set */ { unsigned enabledLabels = 0; boolean anyExists = FALSE; int i; for (i = 0; itemLabelCartVarNamesMap[i].name != NULL; i++) { if (getLabelCartVar(tg, itemLabelCartVarNamesMap[i].name, &anyExists)) enabledLabels |= itemLabelCartVarNamesMap[i].flag; } // if it looks like new track settings have never been configured, set from old. if ((enabledLabels == 0) && !anyExists) - setFromOldLabelsVarsInCart(tg); + enabledLabels = setFromOldLabelsVarsInCart(tg); return enabledLabels; } static void concatItemName(char *name, int nameSize, char *value) /* add a name to the name buffer */ { if (strlen(name) > 0) safecat(name, nameSize, "/"); safecat(name, nameSize, value); } static char* getTranscriptLabel(unsigned enabledLabels, struct genePred *gp, struct wgEncodeGencodeAttrs *attrs) /* one type of label for a item in track */ {