6e57bd7dddafb83f609a22cba99c47c97fb506d9
tdreszer
Thu Sep 9 09:09:18 2010 -0700
hgTrackUi can now use ajax to update composite/view settings, which enables keeping subtrack level v. composite/view level settings properly influencing each other. That is, timing is important in ensuring that composite/view level changes overrides subtrack level settings. The triggers for this code in hui.c are all ifdef'd on SUBTRACK_CFG_POPUP.
diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index 1c860f4..09a8a85 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -47,6 +47,7 @@
#define ENCODE_DCC_DOWNLOADS "encodeDCC"
//#define SUBTRACK_CFG_POPUP
+//#define BAM_CFG_UI_CHANGES
// TODO: For subtrack cfg and integration with right-click and subtrack level vis:
/*
1) Composite/view level settings should be ajaxed over upon change
@@ -972,7 +973,10 @@
baseColorDrawAllOptionValues,
ArraySize(baseColorDrawAllOptionLabels),
curValue, NULL);
- printf("
Help on mRNA coloring
",
+#ifndef BAM_CFG_UI_CHANGES
+ printf("
");
+#endif///ndef BAM_CFG_UI_CHANGES
+ printf("Help on mRNA coloring
",
CDS_MRNA_HELP_PAGE);
}
else if (gotCds)
@@ -982,7 +986,10 @@
baseColorDrawGenomicOptionValues,
ArraySize(baseColorDrawGenomicOptionLabels),
curValue, NULL);
- printf("
Help on codon coloring
",
+#ifndef BAM_CFG_UI_CHANGES
+ printf("
");
+#endif///ndef BAM_CFG_UI_CHANGES
+ printf("Help on codon coloring
",
CDS_HELP_PAGE);
}
else if (gotSeq)
@@ -992,7 +999,10 @@
baseColorDrawItemOptionValues,
ArraySize(baseColorDrawItemOptionLabels),
curValue, NULL);
- printf("
Help on base coloring
",
+#ifndef BAM_CFG_UI_CHANGES
+ printf("
");
+#endif///ndef BAM_CFG_UI_CHANGES
+ printf("Help on base coloring
",
CDS_BASE_HELP_PAGE);
}
}
@@ -1037,6 +1047,30 @@
boolean showDoubleInsert, showQueryInsert, showPolyA;
char var[512];
indelEnabled(cart, tdb, 0.0, &showDoubleInsert, &showQueryInsert, &showPolyA);
+#ifdef BAM_CFG_UI_CHANGES
+ printf("
Alignment Gap/Insertion Display Options"); + printf(" Help on display options\n | |
", + INDEL_HELP_PAGE); + safef(var, sizeof(var), "%s_%s", INDEL_DOUBLE_INSERT, tdb->track); + cgiMakeCheckBox(var, showDoubleInsert); + printf(" | Draw double horizontal lines when both genome and query have " + "an insertion |
"); + safef(var, sizeof(var), "%s_%s", INDEL_QUERY_INSERT, tdb->track); + cgiMakeCheckBox(var, showQueryInsert); + printf(" | Draw a vertical purple line for an insertion at the beginning or "
+ "end of the query, orange for insertion in the middle of the query |
"); + safef(var, sizeof(var), "%s_%s", INDEL_POLY_A, tdb->track); + /* We can highlight valid polyA's only if we have query sequence -- + * so indelPolyA code piggiebacks on baseColor code: */ + if (baseColorGotSequence(tdb)) + { + cgiMakeCheckBox(var, showPolyA); + printf(" | Draw a vertical green line where query has a polyA tail " + "insertion |
Alignment Gap/Insertion Display Options
\n");
safef(var, sizeof(var), "%s_%s", INDEL_DOUBLE_INSERT, tdb->track);
cgiMakeCheckBox(var, showDoubleInsert);
@@ -1062,6 +1096,7 @@
printf("Help on alignment gap/insertion display options"
"
\n",
INDEL_HELP_PAGE);
+#endif///ndef BAM_CFG_UI_CHANGES
}
}
@@ -3683,11 +3718,15 @@
return date;
}
-static void cfgLinkToDependentCfgs(struct trackDb *tdb,char *prefix)
+static void cfgLinkToDependentCfgs(struct cart *cart, struct trackDb *tdb,char *prefix)
/* Link composite or view level controls to all associateled lower level controls */
{
-if(tdbIsComposite(tdb)) // FIXME: Only when some subtracks are configurable
+if (!cartVarExists(cart, "ajax") && tdbIsComposite(tdb))
+#ifdef SUBTRACK_CFG_POPUP
+ printf("\n",prefix);
+#else///ifndef SUBTRACK_CFG_POPUP
printf("\n",prefix);
+#endif///ndef SUBTRACK_CFG_POPUP
}
static void compositeUiSubtracks(char *db, struct cart *cart, struct trackDb *parentTdb,
@@ -3703,7 +3742,9 @@
char *colors[2] = { COLOR_BG_DEFAULT,
COLOR_BG_ALTDEFAULT };
int colorIx = COLOR_BG_DEFAULT_IX; // Start with non-default allows alternation
+#ifndef SUBTRACK_CFG_POPUP
boolean dependentCfgsNeedBinding = FALSE;
+#endif///ndef SUBTRACK_CFG_POPUP
// Get list of leaf subtracks to work with
struct slRef *subtrackRef, *subtrackRefList = trackDbListGetRefsToDescendantLeaves(parentTdb->subtracks);
@@ -4009,8 +4050,10 @@
puts("
"); if (!primarySubtrack) puts(""); +#ifndef SUBTRACK_CFG_POPUP if(dependentCfgsNeedBinding) - cfgLinkToDependentCfgs(parentTdb,parentTdb->track); + cfgLinkToDependentCfgs(cart,parentTdb,parentTdb->track); +#endif//ndef SUBTRACK_CFG_POPUP membersForAllSubGroupsFree(parentTdb,&membersForAll); dyStringFree(&dyHtml) sortOrderFree(&sortOrder); @@ -4064,7 +4107,7 @@ char *view = tdbGetViewName(tdb); if(view != NULL) printf(" %s",view); - printf("' bgcolor=\"%s\" borderColor=\"%s\">
",boxed?" width='100%'":""); +char *tdbShowNames = trackDbSetting(tdb, BAM_SHOW_NAMES); +safef(cartVarName, sizeof(cartVarName), "%s.%s", name, BAM_SHOW_NAMES); +cartMakeCheckBox(cart, cartVarName, !sameOk(tdbShowNames, "off")); +printf(" | Display read names | "); +if (boxed && fileExists(hHelpFile("hgBamTrackHelp"))) + printf("BAM " + "configuration help | "); +printf("
"); + safef(cartVarName, sizeof(cartVarName), "%s." BAM_PAIR_ENDS_BY_NAME, name); + cartMakeCheckBox(cart, cartVarName, TRUE); + printf(" | Attempt to join paired end reads by name\n");
+ //puts(" "); + } +printf(" | |
Minimum alignment quality:\n"); +safef(cartVarName, sizeof(cartVarName), "%s." BAM_MIN_ALI_QUAL, name); +cartMakeIntVar(cart, cartVarName, + atoi(trackDbSettingOrDefault(tdb, BAM_MIN_ALI_QUAL, BAM_MIN_ALI_QUAL_DEFAULT)), 4); +printf(" |
"); if (trackDbCountDescendantLeaves(tdb) < MANY_SUBTRACKS && !hasSubgroups) @@ -6540,6 +6623,11 @@ hCompositeUiByMatrix(db, cart, tdb, formName); } } +#ifdef SUBTRACK_CFG_POPUP + if(primarySubtrack == NULL) + cfgLinkToDependentCfgs(cart,tdb,tdb->track); // Must be after views are set up to get view vis + printf("\n"); +#endif } cartSaveSession(cart);