db1681c559128800c65ce174dc010343e6ea38d2
angie
Thu Oct 31 13:45:12 2019 -0700
bigDbSnp freqSource dropdown: clarify that 'GnomAD' is GnomAD genomes, thx Ana. refs #23283
diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index f6c57f6..37c1ecc 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -4315,38 +4315,51 @@
boolean option = cartUsualBooleanClosestToHome(cart, tdb, FALSE, suffix, defaultOn);
char cartVar[1024];
safef(cartVar, sizeof cartVar, "%s.%s", tdb->track, suffix);
cgiMakeCheckBox(cartVar, option);
printf(" %s ", desc);
}
static void freqSourceSelect(struct cart *cart, struct trackDb *tdb, char *name)
/* Make a select input for preferred source of allele frequencies from
* trackDb setting freqSourceOrder. */
{
char *freqSourceOrder = cloneString(trackDbSetting(tdb, "freqSourceOrder"));
if (isEmpty(freqSourceOrder))
return;
int fsCount = countSeparatedItems(freqSourceOrder, ',');
+char *values[fsCount];
+chopCommas(freqSourceOrder, values);
char *menu[fsCount];
-chopCommas(freqSourceOrder, menu);
+int i;
+for (i = 0; i < fsCount; i++)
+ {
+ // Change label of GnomAD to "GnomAD genomes" for clarity when "GnomAD_exomes" is present.
+ if (sameString(values[i], "GnomAD") && stringIx("GnomAD_exomes", values) >= 0)
+ menu[i] = "GnomAD genomes";
+ else
+ {
+ menu[i] = cloneString(values[i]);
+ strSwapChar(menu[i], '_', ' ');
+ }
+ }
boolean parentLevel = isNameAtParentLevel(tdb, name);
char *freqProj = cartOptionalStringClosestToHome(cart, tdb, parentLevel, "freqProj");
puts("Frequency source/project to use for Minor Allele Frequency (MAF):");
char cartVar[1024];
safef(cartVar, sizeof cartVar, "%s.freqProj", name);
-cgiMakeDropList(cartVar, menu, ArraySize(menu), freqProj);
+cgiMakeDropListWithVals(cartVar, menu, values, ArraySize(menu), freqProj);
puts("
");
}
static struct trackDb *tdbOrAncestorByName(struct trackDb *tdb, char *name)
/* For reasons Angie cannot fathom, if a composite or view is passed to cfgByCfgType then
* cfgByCfgType passes a leaf subtrack to its callees like bigDbSnpCfgUi. That is why we
* see so many calls to isNameAtParentLevel, which returns true if the tdb was originally
* at the composite or view level, which we can only tell by comparing with the original track name.
* labelMakeCheckBox, called by many handlers in hgTrackUi that must be always top-level
* (or have a special handler that bypasses cfgByCfgType like refSeqComposite),
* is blissfully unaware of this. It uses the same tdb for looking in cart ClosestToHome
* and for making the HTML element's cart var name, trusting that the correct tdb has been
* handed to it.
* So in order for a callee of cfgByCfgType to call labelMakeCheckBox with the correct tdb,
* we need to walk back up comparing name like isNameAtParentLevel does.