6bd333f69401150f11cfa8d592165ad9b655f80f markd Wed Nov 2 23:01:02 2022 -0700 added track hub control to set max transcripts diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 2a5bbb0..ad69413 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -7395,54 +7395,66 @@ printf("<TD align='left'%s> (%d to %d)",(filterByRange?"":" colspan=3"),minLimit, maxLimit); if (trackDbSettingClosestToHome(tdb, GRAY_LEVEL_SCORE_MIN) != NULL) { printf("<TR><TD align='right'colspan=5>"); scoreGrayLevelCfgUi(cart, tdb, name, 1000); puts("</TR>"); } } if (opened) { puts("</TABLE>"); cfgEndBox(boxed); } } -static void gencodeLabelControls(char *db, struct cart *cart, struct trackDb *tdb, char *name, char *title, boolean boxed, boolean parentLevel) +static void gencodeLabelControls(char *db, struct cart *cart, struct trackDb *tdb, char *name, boolean parentLevel) /* generate label checkboxes for GENCODE. */ { // See hgTracks/gencodeTracks.c:registerProductionTrackHandlers() // and hgTracks/gencodeTracks.c:assignConfiguredName() char *labelsNames[][2] = { {"gene name", "geneName"}, {"gene id", "geneId"}, {"transcript id", "transcriptId"}, {NULL, NULL} }; int i; for (i = 0; labelsNames[i][0] != NULL; i++) { char varName[64], varSuffix[64]; safef(varSuffix, sizeof(varSuffix), "label.%s", labelsNames[i][1]); safef(varName, sizeof(varName), "%s.%s", name, varSuffix); char *value = cartUsualStringClosestToHome(cart, tdb, parentLevel, varSuffix, NULL); boolean checked = (value != NULL) && !sameString(value, "0"); printf("%s%s: ", (i > 0) ? " " : "", labelsNames[i][0]); cgiMakeCheckBoxMore(varName, checked, NULL); } } +static void gencodeDisplayControls(char *db, struct cart *cart, struct trackDb *tdb, char *name, boolean parentLevel) +/* generate display controls */ +{ +static char *varSuffix = "maxTrans"; +char varName[64]; +safef(varName, sizeof(varName), "%s.%s", name, varSuffix); +int maxTrans = cartUsualIntClosestToHome(cart, tdb, parentLevel, varSuffix, 0); +printf("<br>Maximum number of transcripts to display: "); +cgiMakeIntVar(varName, maxTrans, 5); +printf(" (0 to display all)"); +} + static void newGencodeShowOptions(struct cart *cart, struct trackDb *tdb) /* Put up line of controls that describe what parts to show. */ { char varName[64]; printf("<BR><B>Show:</B> "); safef(varName, sizeof(varName), "%s.show.noncoding", tdb->track); boolean option = cartUsualBoolean(cart, varName, TRUE); cgiMakeCheckBox(varName, option); printf(" %s ", "non-coding genes"); safef(varName, sizeof(varName), "%s.show.spliceVariants", tdb->track); option = cartUsualBoolean(cart, varName, TRUE); cgiMakeCheckBox(varName, option); @@ -7478,31 +7490,32 @@ if (sameString(name, "acembly")) { char *acemblyClass = cartUsualStringClosestToHome(cart,tdb,parentLevel,"type", acemblyEnumToString(0)); printf("<p><b>Gene Class: </b>"); acemblyDropDown("acembly.type", acemblyClass); printf(" "); } else if (isGencode3) { newGencodeShowOptions(cart, tdb); } else if (startsWith("wgEncodeGencode", name)) { // new GENCODEs - gencodeLabelControls(db, cart, tdb, name, title, boxed, parentLevel); + gencodeLabelControls(db, cart, tdb, name, parentLevel); + gencodeDisplayControls(db, cart, tdb, name, parentLevel); } else if (sameString("wgEncodeSangerGencode", name) || (startsWith("encodeGencode", name) && !sameString("encodeGencodeRaceFrags", name))) { // GENCODE pilot (see hgTracks/gencodeTracks.c:registerPilotTrackHandlers() // and hgTracks/simpleTracks.c:genePredAssignConfiguredName() printf("<B>Label:</B> "); safef(varName, sizeof(varName), "%s.label", name); cgiMakeRadioButton(varName, "gene", sameString("gene", geneLabel)); printf("%s ", "gene"); cgiMakeRadioButton(varName, "accession", sameString("accession", geneLabel)); printf("%s ", "accession"); cgiMakeRadioButton(varName, "both", sameString("both", geneLabel)); printf("%s ", "both"); cgiMakeRadioButton(varName, "none", sameString("none", geneLabel));