void getFileListAndReason(struct sqlConnection *conn) /* Put up URL. */ { edwMustGetUserFromEmail(conn, userEmail); printf("Please enter in accessions (ENCFF identifiers) for files to deprecate:<BR>"); cgiMakeTextArea("fileList", fileList, 4, 60); printf("<BR>"); printf("Please enter in reason for deprecating files:<BR>"); cgiMakeTextArea("reason", reason, 4, 60); printf("<BR>"); printf("Allow me to deprecate files not uploaded by me: "); cgiMakeCheckBox("allowBox", FALSE); printf("<BR>"); cgiMakeButton("submit", "submit"); edwPrintLogOutButton(); }
void doSetUserRegions(struct sqlConnection *conn) /* Respond to set regions button. */ { char *oldPasted = cartUsualString(cart, hgtaEnteredUserRegions, ""); char *db = cartOptionalString(cart, hgtaUserRegionsDb); if (db && !sameString(db, database)) oldPasted = ""; htmlOpen("Enter region definition\n"); hPrintf("<FORM ACTION=\"%s\" METHOD=POST " " ENCTYPE=\"multipart/form-data\" NAME=\"mainForm\">\n", getScriptName()); cartSaveSession(cart); hPrintf("<TABLE><TR><TD ALIGN=LEFT>\n"); hPrintf("Paste regions:"); hPrintf("</TD><TD ALIGN=RIGHT>"); hPrintf("Or upload file: <INPUT TYPE=FILE NAME=\"%s\"> <BR>\n", hgtaEnteredUserRegionFile); hPrintf("</TD></TR><TR><TD COLSPAN=2 ALIGN=LEFT>\n"); cgiMakeTextArea(hgtaEnteredUserRegions, oldPasted, 10, 70); hPrintf("</TD></TR><TR><TD COLSPAN=2 ALIGN=LEFT>\n"); cgiMakeButton(hgtaDoSubmitUserRegions, "submit"); hPrintf(" "); cgiMakeButton(hgtaDoClearSetUserRegionsText, "clear"); hPrintf(" "); cgiMakeButton(hgtaDoMainPage, "cancel"); hPrintf("</TD></TR></TABLE>"); hPrintf("</FORM><BR>\n"); webIncludeHelpFile("hgTbUserRegionsHelp", FALSE); htmlClose(); }
void doAdvFilterKeyPaste(struct sqlConnection *conn, struct column *colList, struct column *col) /* Handle upload keyword list button press in advanced filter form. */ { char *varName = NULL; char buf[1024]; cartRemovePrefix(cart, keyWordPastePrefix); safef(buf, sizeof(buf), "Paste List : %s - %s", col->shortLabel, col->longLabel); makeTitle(buf, NULL); hPrintf("<FORM ACTION=\"../cgi-bin/hgNear\" METHOD=POST>\n"); cartSaveSession(cart); hPrintf("Paste in a list of items to match. "); cgiMakeButton("submit", "submit"); hPrintf("<BR>\n"); varName = colVarName(col, keyWordPastedPrefix); cgiMakeTextArea(varName, "", 10, 60); hPrintf("</FORM>"); }
void doPasteIdentifiers(struct sqlConnection *conn) /* Respond to paste identifiers button. */ { struct sqlConnection *alternateConn = conn; char *actualDb = database; if (sameWord(curTable, WIKI_TRACK_TABLE)) { alternateConn = wikiConnect(); actualDb = wikiDbName(); } char *oldPasted = forCurTable() ? cartUsualString(cart, hgtaPastedIdentifiers, "") : ""; struct hTableInfo *hti = maybeGetHti(actualDb, curTable, conn); char *idField = getIdField(actualDb, curTrack, curTable, hti); htmlOpen("Paste In Identifiers for %s", curTableLabel()); if (idField == NULL) errAbort("Sorry, I can't tell which field of table %s to treat as the " "identifier field.", curTable); hPrintf("<FORM ACTION=\"%s\" METHOD=%s>\n", getScriptName(), cartUsualString(cart, "formMethod", "POST")); cartSaveSession(cart); hPrintf("Please paste in the identifiers you want to include.\n"); if (sqlDatabaseExists("hgTemp")) explainIdentifiers(actualDb, alternateConn, idField); else warn("No hgTemp database found for temporary tables.<br>Please src/product/README.mysql.setup for more information."); hPrintf("<BR>\n"); cgiMakeTextArea(hgtaPastedIdentifiers, oldPasted, 10, 70); hPrintf("<BR>\n"); cgiMakeButton(hgtaDoPastedIdentifiers, "submit"); hPrintf(" "); cgiMakeButton(hgtaDoClearPasteIdentifierText, "clear"); hPrintf(" "); cgiMakeButton(hgtaDoMainPage, "cancel"); hPrintf("</FORM>"); cgiDown(0.9); htmlClose(); if (sameWord(curTable, WIKI_TRACK_TABLE)) wikiDisconnect(&alternateConn); }
void webMain(struct liftOverChain *chain, char *dataFormat, boolean multiple) /* set up page for entering data */ { struct dbDb *dbList; char *fromOrg = hArchiveOrganism(chain->fromDb), *toOrg = hArchiveOrganism(chain->toDb); cgiParagraph( "This tool converts genome coordinates and genome annotation files " "between assemblies. " "The input data can be pasted into the text box, or uploaded from a file. " "If a pair of assemblies cannot be selected from the pull-down menus," " a direct lift between them is unavailable. " "However, a sequential lift may be possible. " "Example: lift from Mouse, May 2004, to Mouse, Feb. 2006, and then from Mouse, " "Feb. 2006 to Mouse, July 2007 to achieve a lift from mm5 to mm9. " ""); /* create HMTL form */ puts("<FORM ACTION=\"../cgi-bin/hgLiftOver\" METHOD=\"POST\" " " ENCTYPE=\"multipart/form-data\" NAME=\"mainForm\">\n"); cartSaveSession(cart); /* create HTML table for layout purposes */ puts("\n<TABLE WIDTH=\"100%%\">\n"); /* top two rows -- genome and assembly menus */ cgiSimpleTableRowStart(); cgiTableField("Original Genome: "); cgiTableField("Original Assembly: "); cgiTableField("New Genome: "); cgiTableField("New Assembly: "); cgiTableRowEnd(); cgiSimpleTableRowStart(); /* genome */ cgiSimpleTableFieldStart(); dbList = hGetLiftOverFromDatabases(); printSomeGenomeListHtmlNamed(HGLFT_FROMORG_VAR, chain->fromDb, dbList, onChange); cgiTableFieldEnd(); /* from assembly */ cgiSimpleTableFieldStart(); printAllAssemblyListHtmlParm(chain->fromDb, dbList, HGLFT_FROMDB_VAR, TRUE, onChange); cgiTableFieldEnd(); /* to assembly */ cgiSimpleTableFieldStart(); dbDbFreeList(&dbList); dbList = hGetLiftOverToDatabases(chain->fromDb); printLiftOverGenomeList(HGLFT_TOORG_VAR, chain->toDb, dbList, onChange); cgiTableFieldEnd(); cgiSimpleTableFieldStart(); printAllAssemblyListHtmlParm(chain->toDb, dbList, HGLFT_TODB_VAR, TRUE, ""); cgiTableFieldEnd(); cgiTableRowEnd(); cgiTableEnd(); cgiParagraph(" "); cgiSimpleTableStart(); cgiSimpleTableRowStart(); cgiSimpleTableFieldStart(); cgiTableField("Minimum ratio of bases that must remap:"); cgiTableFieldEnd(); cgiSimpleTableFieldStart(); cgiMakeDoubleVar(HGLFT_MINMATCH,chain->minMatch,6); cgiTableFieldEnd(); cgiTableRowEnd(); cgiSimpleTableRowStart(); cgiSimpleTableFieldStart(); cgiTableField("Minimum chain size in target:"); cgiTableFieldEnd(); cgiSimpleTableFieldStart(); cgiMakeIntVar(HGLFT_MINSIZET,chain->minSizeT,4); cgiTableFieldEnd(); cgiTableRowEnd(); cgiSimpleTableRowStart(); cgiSimpleTableFieldStart(); cgiTableField("Minimum hit size in query:"); cgiTableFieldEnd(); cgiSimpleTableFieldStart(); cgiMakeIntVar(HGLFT_MINSIZEQ,chain->minSizeQ,4); cgiTableFieldEnd(); cgiTableRowEnd(); cgiSimpleTableRowStart(); cgiSimpleTableFieldStart(); cgiTableField("Allow multiple output regions:"); cgiTableFieldEnd(); cgiSimpleTableFieldStart(); cgiMakeCheckBox(HGLFT_MULTIPLE,multiple); cgiTableFieldEnd(); cgiTableRowEnd(); cgiSimpleTableRowStart(); cgiSimpleTableFieldStart(); cgiTableField("Min ratio of alignment blocks/exons that must map:"); cgiTableFieldEnd(); cgiSimpleTableFieldStart(); cgiMakeDoubleVar(HGLFT_MINBLOCKS,chain->minBlocks,6); cgiTableFieldEnd(); cgiTableRowEnd(); cgiSimpleTableRowStart(); cgiSimpleTableFieldStart(); cgiTableField("If thickStart/thickEnd is not mapped, use the closest mapped base:"); cgiTableFieldEnd(); cgiSimpleTableFieldStart(); cgiMakeCheckBox(HGLFT_FUDGETHICK,(chain->fudgeThick[0]=='Y') ? TRUE : FALSE); cgiTableFieldEnd(); cgiTableRowEnd(); cgiTableEnd(); /* next row -- file format menu */ cgiParagraph( " For descriptions of the supported data formats, see the bottom of this page."); cgiSimpleTableStart(); cgiSimpleTableRowStart(); cgiTableField("Data Format: "); cgiSimpleTableFieldStart(); cgiMakeDropList(HGLFT_DATAFORMAT_VAR, formatList, sizeof(formatList)/sizeof (char*) - 1, dataFormat); cgiTableFieldEnd(); cgiTableRowEnd(); cgiTableEnd(); /* text box and two buttons (submit, reset) */ cgiParagraph(" Paste in data:\n"); cgiSimpleTableStart(); cgiSimpleTableRowStart(); cgiSimpleTableFieldStart(); cgiMakeTextArea(HGLFT_USERDATA_VAR, cartCgiUsualString(cart, HGLFT_USERDATA_VAR, NULL), 10, 80); cgiTableFieldEnd(); /* right element of table is a nested table * with two buttons stacked on top of each other */ cgiSimpleTableFieldStart(); cgiSimpleTableStart(); cgiSimpleTableRowStart(); cgiSimpleTableFieldStart(); cgiMakeSubmitButton(); cgiTableFieldEnd(); cgiTableRowEnd(); cgiSimpleTableRowStart(); cgiSimpleTableFieldStart(); cgiMakeClearButton("mainForm", HGLFT_USERDATA_VAR); cgiTableFieldEnd(); cgiTableRowEnd(); cgiTableEnd(); cgiTableFieldEnd(); cgiTableRowEnd(); cgiTableEnd(); /* next row -- file upload controls */ cgiParagraph(" Or upload data from a file:"); cgiSimpleTableStart(); cgiSimpleTableRowStart(); printf("<TD><INPUT TYPE=FILE NAME=\"%s\"></TD>\n", HGLFT_DATAFILE_VAR); puts("<TD><INPUT TYPE=SUBMIT NAME=SubmitFile VALUE=\"Submit File\"></TD>\n"); cgiTableRowEnd(); cgiTableEnd(); printf("<input type=\"hidden\" name=\"%s\" value=\"0\">\n", HGLFT_REFRESHONLY_VAR); puts("</FORM>\n"); cartSaveSession(cart); puts("</FORM>"); freeMem(fromOrg); freeMem(toOrg); }
void uploadPage() /* Put up initial upload page. */ { char *oldFileName = cartUsualString(cart, hggUploadFile "__filename", ""); cartWebStart(cart, database, "Upload Data to Genome Graphs"); hPrintf("<FORM ACTION=\"../cgi-bin/hgGenome\" METHOD=\"POST\" ENCTYPE=\"multipart/form-data\">"); cartSaveSession(cart); hPrintf("name of data set: "); cartMakeTextVar(cart, hggDataSetName, "", 16); hPrintf("<BR>"); hPrintf("description: "); cartMakeTextVar(cart, hggDataSetDescription, "", 64); hPrintf("<BR>\n"); hPrintf("file format: "); cgiMakeDropList(hggFormatType, formatNames, ArraySize(formatNames), cartUsualString(cart, hggFormatType, formatNames[0])); hPrintf("<BR>\n"); hPrintf(" markers are: "); cgiMakeDropList(hggMarkerType, markerNames, ArraySize(markerNames), cartUsualString(cart, hggMarkerType, markerNames[0])); hPrintf("<BR>\n"); hPrintf(" column labels: "); cgiMakeDropList(hggColumnLabels, colLabelNames, ArraySize(colLabelNames), cartUsualString(cart, hggColumnLabels, colLabelNames[0])); hPrintf("<BR>\n"); hPrintf("display min value: "); cartMakeTextVar(cart, hggMinVal, "", 5); hPrintf(" max value: "); cartMakeTextVar(cart, hggMaxVal, "", 5); hPrintf("<BR>\n"); hPrintf("label values: "); cartMakeTextVar(cart, hggLabelVals, "", 32); hPrintf("<BR>\n"); hPrintf("draw connecting lines between markers separated by up to "); cartMakeIntVar(cart, hggMaxGapToFill, 25000000, 8); hPrintf(" bases.<BR>"); hPrintf("<BR>\n"); hPrintf("file name: <INPUT TYPE=FILE NAME=\"%s\" VALUE=\"%s\">", hggUploadFile, oldFileName); hPrintf("<BR>\n"); hPrintf(" or<BR>\n"); hPrintf("Paste URLs or data:<br>"); cgiMakeTextArea(hggUploadUrl, "", 7, 73); hPrintf("<BR>\n"); hPrintf("<BR>\n"); cgiMakeButton(hggSubmitUpload, "submit"); hPrintf("</FORM>\n"); hPrintf("<i>Note: If you are uploading more than one data set please give them "); hPrintf("different names. Only the most recent data set of a given name is "); hPrintf("kept. Otherwise data sets will be kept for at least 48 hours from "); hPrintf("last use. After that time you may have to upload them again.</i>"); /* Put up section that describes file formats. */ webNewSection("Upload file formats"); hPrintf("%s", "<P>The upload file is a table in some format. In all formats there is " "a single line for each marker. " "Each line starts with information on the marker, and ends with " "the numerical values associated with that marker. The exact format " "of the line depends on what is selected from the markers drop " "down menu. If this is <i>chromosome base</i> then the line will " "contain the tab or space-separated fields: chromosome, position, " "and value(s). The first base in a chromosome is considered position 0. " "An example <i>chromosome base</i> type line is:<PRE><TT>\n" "chrX 100000 1.23\n" "</TT></PRE>The lines for other marker types contain two fields: " "marker and value(s). For dbSNP rsID's an example is:<PRE><TT>\n" "rs10218492 0.384\n" "</TT></PRE>" "</P><P>" "The file can contain multiple value fields. In this case a " "separate graph will be available for each value column in the input " "table. It's a " "good idea to set the display min/max values above if you want the " "graphs to share the same scale." "</P>" ); webNewSection("Using the upload page"); hPrintf( "To upload a file in any of the supported formats, " "locate the file on your computer using the controls next to <B>file name</B>, " "or supply a <B>URL</B> to the data, " "and then submit. The other controls on this form are optional, though " "filling them out will sometimes enhance the display. In general " "the controls that default to <i>best guess</i> can be left alone, " "since the guess is almost always correct. The controls for display min and " "max values and connecting lines can be set later via the configuration " "page as well. Here is a description of each control." "<UL>" "<LI><B>name of data set:</B> Displayed in graph drop-down in Genome Graphs " " and as trackname in Genome Browser. Only the first 16 characters are " " visible in some contexts. For data sets with multiple graphs, this is the " " first part of the name, shared with all members of the data set.</LI>" "<LI><B>description:</B> A short sentence describing the data set. Displayed in " "the Genome Graphs and Genome Browser configuration pages, and as the center " "label in the Genome Browser.</LI>" "<LI><B>file format:</B> Controls whether the upload file is a tab-separated, " " comma-separated, or space separated table.</LI>" "<LI><B>markers are:</B> Describes how to map the data to chromosomes. The choices " " are either the first column of the file is an ID of some sort, or the first column " " is a chromosome and the next a base. The IDs can be SNP rs numbers, STS marker names " " or ID's from any of the supported genotyping platforms.</LI>" "<LI><B>column labels:</B> Controls whether the first row of the upload file is " " interpreted as labels rather than data. If the first row contains text in the " " numerical fields, or if the mapping fields are empty, it is interpreted by " " \"best guess\" as labels. This is generally correct, but you can override this " " interpretation by explicitly setting the control. </LI>" "<LI><B>display min value/max value:</B> Set the range of the data set that will " " be plotted. If left blank, the range will be taken from the min/max values in the " " data set itself. For all data sets to share the same scale usually you'll need " " to set this.</LI>" "<LI><B>label values:</B> A comma-separated list of numbers for the vertical axis. " " If left blank the axis will be labeled at the 1/3 and 2/3 point. </LI>" "<LI><B>draw connecting lines:</B> Lines connecting data points separated by " " no more than this number of bases are drawn. </LI>" "<LI><B>file name, or Paste URLs or data:</B> Specify the uploaded data --" " enter either a file on your local computer; or a URL at which the data file can be" " found; or simply paste-in the data. If entries are made in both fields, the file name will take" " precedence. </LI>"); cartWebEnd(); }