\n");
}
if (curTrack == NULL)
{
struct trackDb *tdb = hTrackDbForTrack(database, curTable);
struct trackDb *cTdb = hCompositeTrackDbForSubtrack(database, tdb);
if (cTdb)
curTrack = cTdb;
else
curTrack = tdb;
isMaf = isMafTable(database, curTrack, curTable);
}
+/* Table-specific options */
+if (isHicTable(curTable))
+ hicMainPageConfig(cart, hTrackDbForTrack(database,curTable));
+
/* Region line */
{
char *regionType;
if (cartVarExists(cart, "hgFind.matches")) // coming back from a search
regionType = cartUsualString(cart, hgtaRegionType, hgtaRegionTypeRange);
else
regionType = cartUsualString(cart, hgtaRegionType, hgtaRegionTypeGenome);
char *range = cartUsualString(cart, hgtaRange, "");
if (isPositional)
{
boolean doEncode = FALSE;
if (!trackHubDatabase(database))
doEncode = sqlTableExists(conn, "encodeRegions");
hPrintf("
region:\n");
/* If regionType not allowed force it to "genome". */
if ((sameString(regionType, hgtaRegionTypeUserRegions) &&
userRegionsFileName() == NULL) ||
(sameString(regionType, hgtaRegionTypeEncode) && !doEncode))
regionType = hgtaRegionTypeGenome;
// Is "genome" is not allowed because of tdb 'tableBrowser noGenome'?
boolean disableGenome = ((curTrack && cartTrackDbIsNoGenome(database, curTrack->table)) ||
(curTable && cartTrackDbIsNoGenome(database, curTable)));
// If "genome" is selected but not allowed, force it to "range":
if (sameString(regionType, hgtaRegionTypeGenome) && disableGenome)
regionType = hgtaRegionTypeRange;
jsTrackingVar("regionType", regionType);
if (disableGenome)
{
makeRegionButtonExtraHtml(hgtaRegionTypeGenome, regionType, "DISABLED");
hPrintf(" genome (unavailable for selected track)"
" ");
}
else
{
makeRegionButton(hgtaRegionTypeGenome, regionType);
hPrintf(" genome ");
}
if (doEncode)
{
makeRegionButton(hgtaRegionTypeEncode, regionType);
hPrintf(" ENCODE Pilot regions ");
}
makeRegionButton(hgtaRegionTypeRange, regionType);
hPrintf(" position ");
hPrintf("\n",
hgtaRange, hgtaRange, range);
jsOnEventById("focus", hgtaRange,
jsRadioUpdate(hgtaRegionType, "regionType", "range"));
cgiMakeButton(hgtaDoLookupPosition, "lookup");
hPrintf(" ");
if (userRegionsFileName() != NULL)
{
makeRegionButton(hgtaRegionTypeUserRegions, regionType);
hPrintf(" defined regions ");
cgiMakeButton(hgtaDoSetUserRegions, "change");
hPrintf(" ");
cgiMakeButton(hgtaDoClearUserRegions, "clear");
}
else
cgiMakeButton(hgtaDoSetUserRegions, "define regions");
hPrintf("
\n");
}
else
{
/* Need to put at least stubs of cgi variables in for JavaScript to work. */
jsTrackingVar("regionType", regionType);
cgiMakeHiddenVar(hgtaRange, range);
cgiMakeHiddenVar(hgtaRegionType, regionType);
}
/* Select identifiers line (if applicable). */
if (!isWig && getIdField(database, curTrack, curTable, hti) != NULL)
{
hPrintf("
\n");
}
hPrintf("\n");
/* Submit buttons. */
{
hPrintf(" \n");
if (isWig || isBam || isVcf || isLongTabix || isHic)
{
char *name;
extern char *maxOutMenu[];
char *maxOutput = maxOutMenu[0];
if (isCustomTrack(curTable))
name=filterFieldVarName("ct", curTable, "_", filterMaxOutputVar);
else
name=filterFieldVarName(database,curTable, "_",filterMaxOutputVar);
maxOutput = cartUsualString(cart, name, maxOutMenu[0]);
if (isWig)
hPrintf(
"Note: to return more than %s lines, change the filter setting"
" (above). The entire data set may be available for download as"
" a very large file that contains the original data values (not"
" compressed into the wiggle format) -- see the Downloads page."
" ", maxOutput);
else if (isBam || isVcf || isLongTabix || isHic)
hPrintf(
"Note: to return more than %s lines, change the filter setting"
" (above). Please consider downloading the entire data from our Download pages."
" ", maxOutput);
}
else if (anySubtrackMerge(database, curTable) || anyIntersection())
{
hPrintf("Note: The all fields and selected fields output formats "
"are not available when a%s has been specified. ",
canSubtrackMerge ? " subtrack merge or intersection" : "n intersection");
}
cgiMakeButton(hgtaDoTopSubmit, "get output");
hPrintf(" ");
if (isPositional || isWig)
{
cgiMakeButton(hgtaDoSummaryStats, "summary/statistics");
hPrintf(" ");
}
#ifdef SOMETIMES
hPrintf(" ");
cgiMakeButton(hgtaDoTest, "test");
#endif /* SOMETIMES */
}
hPrintf("
"
"To reset all user cart settings (including custom tracks), \n"
"click here.\n",
getScriptName());
}
static char *getGenomeSpaceText()
/* fetch GenomeSpace text if enabled */
{
if (isGenomeSpaceEnabled())
{
return
"Send data to "
"GenomeSpace for use with diverse computational tools. ";
}
else
{
return "";
}
}
void mainPageAfterOpen(struct sqlConnection *conn)
/* Put up main page assuming htmlOpen()/htmlClose()
* will happen in calling routine. */
{
hPrintf(
"Use this program to retrieve the data associated with a track in text "
"format, to calculate intersections between tracks, and to retrieve "
"DNA sequence covered by a track. For help in using this application "
"see Using the Table Browser for a description "
"of the controls in this form, the "
"User's Guide for "
"general information and sample queries, and the OpenHelix Table Browser "
"tutorial for a narrated presentation of the software "
"features and usage. "
"For more complex queries, you may want to use "
"Galaxy or "
"our public "
"MySQL server. "
"To examine the biological function of your set through annotation "
"enrichments, send the data to "
"GREAT. "
"%s"
"Refer to the "
"Credits page for the list of "
"contributors and usage restrictions associated with these data. "
"All tables can be downloaded in their entirety from the "
"Sequence and Annotation Downloads page."
, getGenomeSpaceText()
);
// When GREAT is selected, disable the other checkboxes and force output to BED
jsInline(
"function onSelectGreat() {\n"
" document.getElementById('checkboxGalaxy').checked=false;\n");
if (isGenomeSpaceEnabled())
jsInline(
" document.getElementById('checkboxGenomeSpace').checked=false;\n");
jsInline(
" document.getElementById('outBed').selected=true;\n"
" return true;\n"
"}\n");
// Disable/enable noGenome tracks depending on whether region is genome.
jsInline(
"function maybeDisableNoGenome() {\n"
" var regionTypeSelected = $('input[name=\"hgta_regionType\"]:checked').val();\n"
" var regionIsGenome = (regionTypeSelected === 'genome');\n"
" var $noGenomeOptions = $('select[name=\"hgta_track\"] option.hgtaNoGenome');\n"
" $noGenomeOptions.attr('disabled', regionIsGenome)\n"
" .css('color', regionIsGenome ? '' : 'black');\n"
"}\n"
"$(document).ready(function() {\n"
// once when the page loads, and every time the user changes the region type:
" maybeDisableNoGenome();\n"
" $('input[name=\"hgta_regionType\"]').change(maybeDisableNoGenome);\n"
"});\n");
/* Main form. */
hPrintf("
\n");
/* Hidden form - for benefit of javascript. */
{
static char *saveVars[] = {
"clade", "org", "db", hgtaGroup, hgtaTrack, hgtaTable, hgtaRegionType,
hgtaRange, hgtaOutputType, hgtaOutFileName};
jsCreateHiddenForm(cart, getScriptName(), saveVars, ArraySize(saveVars));
}
/* Hidden form for jumping to custom tracks CGI. */
hPrintf("\n");
/* Hidden form for jumping to track hub manager CGI. */
hPrintf("\n");
webNewSection("Using the Table Browser\n");
printMainHelp();
cartFlushHubWarnings();
}
void doMainPage(struct sqlConnection *conn)
/* Put up the first page user sees. */
{
htmlOpen("Table Browser");
mainPageAfterOpen(conn);
htmlClose();
}