void makeTitle(char *title, char *helpName) /* Make title bar. */ { hPrintf("<TABLE WIDTH=\"100%%\" BGCOLOR=\"#"HG_COL_HOTLINKS"\" BORDER=\"0\" CELLSPACING=\"0\" CELLPADDING=\"2\"><TR>\n"); hPrintf("<TD ALIGN=LEFT><A HREF=\"/index.html\">%s</A></TD>", wrapWhiteFont("Home")); hPrintf("<TD style='text-align:center; color:#FFFFFF; font-size:medium;'>%s</TD>", title); hPrintf("<TD ALIGN=Right>%s", wrapWhiteFont("")); hPrintf("</TR></TABLE>"); }
void doTrackForm(char *psOutput, char *psOutput2) /* Make the tracks display form */ { if (psOutput != NULL) { suppressHtml = TRUE; hideControls = TRUE; } /* Tell browser where to go when they click on image. */ hPrintf("<FORM ACTION=\"%s\" NAME=\"TrackForm\" METHOD=POST>\n\n", "../cgi-bin/pbGlobal"); cartSaveSession(cart); hPrintf("<TABLE WIDTH=\"100%%\" BGCOLOR=\"#"HG_COL_HOTLINKS"\" BORDER=\"0\" CELLSPACING=\"0\" CELLPADDING=\"2\"><TR>\n"); hPrintf("<TD ALIGN=LEFT><A HREF=\"../index.html\">%s</A></TD>", wrapWhiteFont("Home")); hPrintf("<TD style='text-align:center; color:#FFFFFF; font-size:medium;'>%s</TD>", "UCSC Proteome Browser"); hPrintf("<TD ALIGN=CENTER><A HREF=\"../cgi-bin/pbGlobal?%s=%u&pbt.psOutput=on\">%s</A></TD>\n", cartSessionVarName(), cartSessionId(cart), wrapWhiteFont("PDF/PS")); hPrintf("<TD ALIGN=CENTER><A HREF=\"../cgi-bin/pbGateway\">%s</A></TD>", wrapWhiteFont("New Query")); if (proteinInSupportedGenome) { hPrintf("<TD ALIGN=Right><A HREF=\"../goldenPath/help/pbTracksHelpFiles/pbTracksHelp.shtml\" TARGET=_blank>%s</A></TD>", wrapWhiteFont("Help")); } else { hPrintf("<TD ALIGN=Right><A HREF=\"../goldenPath/help/pbTracksHelpFiles/pbTracksHelp.shtml\" TARGET=_blank>%s</A></TD>", wrapWhiteFont("Help")); } hPrintf("</TR></TABLE>"); fflush(stdout); /* Make clickable image and map. */ makeActiveImagePB(psOutput, psOutput2); if (psOutput == NULL) hPrintf("</FORM>"); }
void doMiddle(struct cart *theCart) /* Set up globals and make web page */ { char *db = NULL; char *ignored; struct trackDb *tracks; struct trackRef *tr; struct group *group, *groups = NULL; cart = theCart; cartWebStart(cart, NULL, "ENCODE Track Data Versions (%s)", db); getDbAndGenome(cart, &db, &ignored, NULL); tracks = hTrackDb(db); groups = groupTracks(db, tracks); for (group = groups; group != NULL; group = group->next) { if (group->tracks == NULL || !startsWith("encode", group->name)) continue; hTableStart(); puts("<TR>"); puts("<TH align=LEFT colspan=3 BGCOLOR=#536ED3>"); printf("<B> %s</B> ", wrapWhiteFont(group->label)); printf(" "); puts("</TH>\n"); puts("</TR>"); for (tr = group->tracks; tr != NULL; tr = tr->next) { char *version = trackDbSetting(tr->track, "dataVersion"); if (version) stripString(version, "ENCODE "); puts("<TR><TD>"); printf(" %s", tr->track->shortLabel); puts("</TD><TD>"); printf(" %s", version ? version : " "); puts("</TD><TD>"); printf(" %s", tr->track->longLabel); puts("</TD></TR>"); } /* printf("\t%s\t%s\t%s\n", version, tr->track->shortLabel, tr->track->longLabel); */ hTableEnd(); puts("<BR>"); } cartWebEnd(); }
static void trackConfig(struct track *trackList, struct group *groupList, char *groupTarget, int changeVis) /* Put up track configurations. If groupTarget is * NULL then set visibility for tracks in all groups. Otherwise, * just set it for the given group. If vis is -2, then visibility is * unchanged. If -1 then set visibility to default, otherwise it should * be tvHide, tvDense, etc. */ { #ifdef PRIORITY_CHANGES_IN_CONFIG_UI char pname[512]; char gname[512]; #endif///def PRIORITY_CHANGES_IN_CONFIG_UI struct group *group; boolean showedRuler = FALSE; setRulerMode(); changeTrackVis(groupList, groupTarget, changeVis); /* Set up ruler mode according to changeVis. */ #ifdef BOB_DOESNT_LIKE if (changeVis != -2) { if (groupTarget == NULL || (groupList != NULL && sameString(groupTarget, groupList->name))) { if (changeVis == -1) rulerMode = tvFull; else rulerMode = changeVis; } } #endif /* BOB_DOESNT_LIKE */ jsInit(); cgiMakeHiddenVar(configGroupTarget, "none"); boolean isFirstNotCtGroup = TRUE; for (group = groupList; group != NULL; group = group->next) { struct trackRef *tr; if (group->trackList == NULL) continue; /* check if group section should be displayed */ char *otherState; char *indicator; char *indicatorImg; boolean isOpen = !isCollapsedGroup(group); collapseGroupGoodies(isOpen, FALSE, &indicatorImg, &indicator, &otherState); hTableStart(); hPrintf("<TR NOWRAP>"); hPrintf("<TH NOWRAP align=\"left\" colspan=3 BGCOLOR=#536ED3>"); hPrintf("\n<A NAME='%sGroup'></A>",group->name); hPrintf("<input type=hidden name='%s' id='%s' value=%d>", collapseGroupVar(group->name),collapseGroupVar(group->name), (isOpen?0:1)); hPrintf("<A HREF='%s?%s&%s=%s#%sGroup' class='bigBlue'><IMG height=22 width=22 onclick=\"return toggleTrackGroupVisibility(this,'%s');\" id='%s_button' src='%s' alt='%s' class='bigBlue' title='%s this group'></A> ", hgTracksName(), cartSidUrlString(cart),collapseGroupVar(group->name), otherState, group->name, group->name, group->name, indicatorImg, indicator,isOpen?"Collapse":"Expand"); hPrintf("<B> %s</B> ", wrapWhiteFont(group->label)); hPrintf(" "); hPrintf("<INPUT TYPE=SUBMIT NAME=\"%s\" VALUE=\"%s\" " "onClick=\"document.mainForm.%s.value='%s'; %s\" title='Hide all tracks in this groups'>", configHideAll, "hide all", configGroupTarget, group->name, jsSetVerticalPosition("mainForm")); hPrintf(" "); hPrintf("<INPUT TYPE=SUBMIT NAME=\"%s\" VALUE=\"%s\" " "onClick=\"document.mainForm.%s.value='%s'; %s\" title='Show all tracks in this groups'>", configShowAll, "show all", configGroupTarget, group->name, jsSetVerticalPosition("mainForm")); hPrintf(" "); hPrintf("<INPUT TYPE=SUBMIT NAME=\"%s\" VALUE=\"%s\" " "onClick=\"document.mainForm.%s.value='%s'; %s\" title='Show default tracks in this group'>", configDefaultAll, "default", configGroupTarget, group->name, jsSetVerticalPosition("mainForm")); hPrintf(" "); /* do not want all the submit buttons named the same. It is * confusing to the javascript submit() function. */ char submitName[256]; safef(submitName, sizeof(submitName), "%sSubmit", group->name); cgiMakeButtonWithMsg(submitName, "submit","Submit your selections and view them in the browser"); #ifdef PRIORITY_CHANGES_IN_CONFIG_UI if (withPriorityOverride) { hPrintf(" "); hPrintf(" "); hPrintf(" "); hPrintf("%s", wrapWhiteFont("Group Order: ")); } #endif///def PRIORITY_CHANGES_IN_CONFIG_UI hPrintf("</TH>\n"); #ifdef PRIORITY_CHANGES_IN_CONFIG_UI if (withPriorityOverride) { hPrintf("<TH>\n"); safef(pname, sizeof(pname), "%s.priority",group->name); hDoubleVar(pname, (double)group->priority, 4); hPrintf("</TH>\n"); if (isOpen) hPrintf("<TH align=CENTER BGCOLOR=#536ED3><B> %s</B></TH> ", wrapWhiteFont("Group")); hPrintf("\n"); } #endif///def PRIORITY_CHANGES_IN_CONFIG_UI hPrintf("</TR>\n"); /* First non-CT group gets ruler. */ if (!showedRuler && isFirstNotCtGroup && differentString(group->name, "user")) { showedRuler = TRUE; hPrintf("<TR %sid='%s-0'>",(isOpen ? "" : "style='display: none'"), group->name); hPrintf("<TD>"); hPrintf("<A HREF=\"%s?%s=%u&c=%s&g=%s&hgTracksConfigPage=configure\">", hgTrackUiName(), cartSessionVarName(), cartSessionId(cart), chromName, RULER_TRACK_NAME); hPrintf("%s</A>", RULER_TRACK_LABEL); hPrintf("</TD>"); hPrintf("<TD>"); hTvDropDownClass("ruler", rulerMode, FALSE, rulerMode ? "normalText" : "hiddenText"); hPrintf("</TD>"); hPrintf("<TD>"); hPrintf("Chromosome position in bases. (Clicks here zoom in 3x)"); hPrintf("</TD>"); #ifdef PRIORITY_CHANGES_IN_CONFIG_UI if (withPriorityOverride) { hPrintf("<TD>"); hPrintf("</TD>"); hPrintf("<TD>"); hPrintf("</TD>"); } #endif///def PRIORITY_CHANGES_IN_CONFIG_UI hPrintf("</TR>\n"); } if (differentString(group->name, "user")) isFirstNotCtGroup = FALSE; /* Scan track list to determine which supertracks have visible member * tracks, and to insert a track in the list for the supertrack. * Sort tracks and supertracks together by priority */ groupTrackListAddSuper(cart, group); if (!withPriorityOverride) { /* sort hierarchically by priority, considering supertracks */ struct trackRef *refList = NULL, *ref; for (tr = group->trackList; tr != NULL; tr = tr->next) { struct track *track = tr->track; if (tdbIsSuperTrackChild(track->tdb)) /* ignore supertrack member tracks till supertrack is found */ continue; AllocVar(ref); ref->track = track; slAddTail(&refList, ref); if (tdbIsSuper(track->tdb)) { struct trackRef *tr2; for (tr2 = group->trackList; tr2 != NULL; tr2 = tr2->next) { char *parent = tr2->track->tdb->parentName; if (parent && sameString(parent, track->track)) { AllocVar(ref); ref->track = tr2->track; slAddTail(&refList, ref); } } } } group->trackList = refList; } /* Loop through this group and display */ int rowCount=1; for (tr = group->trackList; tr != NULL; tr = tr->next) { struct track *track = tr->track; struct trackDb *tdb = track->tdb; hPrintf("<TR %sid='%s-%d'>",(isOpen ? "" : "style='display: none'"),group->name, rowCount++); hPrintf("<TD NOWRAP>"); if (tdbIsSuperTrackChild(tdb)) /* indent members of a supertrack */ hPrintf(" "); // Print an icon before the title when one is defined hPrintPennantIcon(track->tdb); if (track->hasUi) hPrintf("<A %s%s%s HREF=\"%s?%s=%u&g=%s&hgTracksConfigPage=configure\">", tdb->parent ? "TITLE=\"Part of super track: " : "", tdb->parent ? tdb->parent->shortLabel : "", tdb->parent ? "...\"" : "", hgTrackUiName(), cartSessionVarName(), cartSessionId(cart), track->track); hPrintf(" %s", track->shortLabel); if (tdbIsSuper(track->tdb)) hPrintf("..."); if (track->hasUi) hPrintf("</A>"); hPrintf("</TD>"); hPrintf("<TD NOWRAP>"); if (tdbIsSuperTrackChild(tdb)) /* indent members of a supertrack */ hPrintf(" "); /* If track is not on this chrom print an informational message for the user. */ if (hTrackOnChrom(track->tdb, chromName)) { if (tdbIsSuper(track->tdb)) { /* supertrack dropdown is hide/show */ superTrackDropDown(cart, track->tdb, 1); } else { /* check for option of limiting visibility to one mode */ hTvDropDownClassVisOnly(track->track, track->visibility, track->canPack, (track->visibility == tvHide) ? "hiddenText" : "normalText", trackDbSetting(track->tdb, "onlyVisibility")); } } else hPrintf("[No data-%s]", chromName); hPrintf("</TD>"); hPrintf("<TD NOWRAP>"); hPrintf("%s", track->longLabel); hPrintf("</TD>"); #ifdef PRIORITY_CHANGES_IN_CONFIG_UI if (withPriorityOverride) { hPrintf("<TD>"); safef(pname, sizeof(pname), "%s.priority",track->track); hDoubleVar(pname, (double)track->priority, 4); hPrintf("</TD>"); hPrintf("<TD>\n"); /* suppress group pull-down for supertrack members */ if (tdbIsSuperTrackChild(track->tdb)) hPrintf(" "); else { safef(gname, sizeof(gname), "%s.group",track->track); printGroupListHtml(gname, groupList, track->groupName); } hPrintf("</TD>"); } #endif///def PRIORITY_CHANGES_IN_CONFIG_UI hPrintf("</TR>\n"); } hTableEnd(); hPrintf("<BR>"); } }
void presentProteinSelections(char *queryID, int protCntInSwissByGene, int protCntInSupportedGenomeDb) /* Fuction to present a web page with proteins of different organisms */ { char *gDatabase; char *org = NULL; char *spID, *displayID, *desc; char cond_str[255]; struct sqlConnection *conn, *conn3; char query[256], query3[512]; struct sqlResult *sr, *sr3; char **row, **row3; struct sqlConnection *connCentral, *proteinsConn; char queryCentral[256]; struct sqlResult *srCentral; char *answer; char *taxonId, *protAcc, *protDisp, *protOrg, *protDesc; char *oldOrg, *orgSciName; char *pbOrgSciName[MAX_PB_ORG]; boolean pbOrgPresented[MAX_PB_ORG]; boolean skipIt; int i, maxPbOrg; int otherCnt; connCentral = hConnectCentral(); hPrintf("<TABLE WIDTH=\"100%%\" BGCOLOR=\"#"HG_COL_HOTLINKS"\" BORDER=\"0\" CELLSPACING=\"0\""); hPrintf("CELLPADDING=\"2\"><TR>\n"); hPrintf("<TD ALIGN=LEFT><A HREF=\"../index.html\">%s</A></TD>", wrapWhiteFont("Home")); hPrintf("<TD style='text-align:center; color:#FFFFFF; font-size:medium;'>%s</TD>", "UCSC Proteome Browser"); if (proteinInSupportedGenome) { hPrintf("<TD ALIGN=Right><A HREF=\"../goldenPath/help/pbTracksHelpFiles/pbTracksHelp.shtml\""); } else { hPrintf("<TD ALIGN=Right><A HREF=\"../goldenPath/help/pbTracksHelpFiles/pbTracksHelp.shtml\""); } hPrintf("TARGET=_blank>%s</A></TD>", wrapWhiteFont("Help")); hPrintf("</TR></TABLE>"); hPrintf("<FONT SIZE=4><BR><B>Please select one of the following proteins:<BR><BR></B></FONT>\n"); /* remmember a list of scientific names for the genomes that supports PB */ sqlSafef(queryCentral, sizeof(queryCentral), "select distinct dbDb.scientificName from dbDb where hgPbOk=1"); srCentral = sqlMustGetResult(connCentral, queryCentral); row3 = sqlNextRow(srCentral); i=0; while (row3 != NULL) { pbOrgSciName[i] = strdup(row3[0]); pbOrgPresented[i] = FALSE; i++; row3 = sqlNextRow(srCentral); } maxPbOrg = i; /* go through each genome DB that supports PB */ sqlSafef(queryCentral, sizeof(queryCentral), "select defaultDb.name, dbDb.organism, dbDb.scientificName from dbDb,defaultDb where hgPbOk=1 and defaultDb.name=dbDb.name"); srCentral = sqlMustGetResult(connCentral, queryCentral); row3 = sqlNextRow(srCentral); while (row3 != NULL) { gDatabase = row3[0]; org = row3[1]; orgSciName= row3[2]; protDbName = hPdbFromGdb(gDatabase); proteinsConn = sqlConnect(protDbName); conn = sqlConnect(gDatabase); sqlSafefFrag(cond_str, sizeof(cond_str), "alias='%s' and spID != ''", queryID); answer = sqlGetField(gDatabase, "kgSpAlias", "count(distinct spID)", cond_str); if ((answer != NULL) && (!sameWord(answer, "0"))) { /* display organism name */ hPrintf("<FONT SIZE=4><B>"); hPrintf("<A href=\"http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Undef&name=%s&lvl=0&srchmode=1\" TARGET=_blank>%s</A>", cgiEncode(orgSciName), orgSciName); hPrintf(" (%s):</B></FONT>\n", org); hPrintf("<UL>"); sqlSafef(query, sizeof(query), "select distinct spID from %s.kgSpAlias where alias='%s' " "and spID != ''", gDatabase, queryID); sr = sqlMustGetResult(conn, query); row = sqlNextRow(sr); while (row != NULL) { spID = row[0]; sqlSafefFrag(cond_str, sizeof(cond_str), "accession='%s'", spID); displayID = sqlGetField(protDbName, "spXref3", "displayID", cond_str); sqlSafefFrag(cond_str, sizeof(cond_str), "accession='%s'", spID); desc = sqlGetField(protDbName, "spXref3", "description", cond_str); /* display a protein */ hPrintf( "<LI><A HREF=\"../cgi-bin/pbGlobal?proteinID=%s&db=%s\">", displayID, gDatabase); if (sameWord(spID, displayID) || (strstr(displayID, spID) != NULL)) { hPrintf("%s</A> %s\n", spID, desc); } else { hPrintf("%s</A> (aka %s) %s\n", spID, displayID, desc); } /* remember the fact that a protein is shown under this PB supported genome */ for (i=0; i<maxPbOrg; i++) { if (sameWord(orgSciName, pbOrgSciName[i])) { pbOrgPresented[i] = TRUE; } } row = sqlNextRow(sr); } hPrintf("</UL>");fflush(stdout); sqlFreeResult(&sr); } sqlDisconnect(&proteinsConn); row3 = sqlNextRow(srCentral); } sqlFreeResult(&srCentral); hDisconnectCentral(&connCentral); sqlDisconnect(&conn); if (protCntInSwissByGene > protCntInSupportedGenomeDb) { otherCnt = -1; if (protCntInSupportedGenomeDb >0) { otherCnt = 0; hPrintf("<FONT SIZE=4><B>Other Organisms:</B></FONT>\n"); hPrintf("<UL>"); } else { hPrintf("<UL>"); } oldOrg = strdup(""); conn3 = sqlConnect(UNIPROT_DB_NAME); sqlSafef(query3, sizeof(query3), "select taxon.id, gene.acc, displayId.val, binomial, description.val " "from gene, displayId, accToTaxon,taxon, description " "where gene.val='%s' and gene.acc=displayId.acc and accToTaxon.taxon=taxon.id " "and accToTaxon.acc=gene.acc and description.acc=gene.acc order by binomial", queryID); sr3 = sqlMustGetResult(conn3, query3); row3 = sqlNextRow(sr3); /* go through each protein */ while (row3 != NULL) { taxonId = row3[0]; protAcc = row3[1]; protDisp = row3[2]; protOrg = row3[3]; protDesc = row3[4]; /* decide if this entry should be skipped */ skipIt = FALSE; for (i=0; i<maxPbOrg; i++) { if (sameWord(pbOrgSciName[i], protOrg) && pbOrgPresented[i]) { skipIt = TRUE; } } /* print organism name if organism changed */ if (!sameWord(protOrg, oldOrg)) { if (!sameWord(oldOrg, "")) { hPrintf("</UL>\n"); } if (!skipIt) { sqlSafefFrag(cond_str, sizeof(cond_str), "id=%s and nameType='genbank common name'", taxonId); answer = sqlGetField(PROTEOME_DB_NAME, "taxonNames", "name", cond_str); hPrintf("<FONT SIZE=3><B>"); hPrintf("<A href=\"http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Undef&name=%s&lvl=0&srchmode=1\" TARGET=_blank>%s</A>", cgiEncode(protOrg), protOrg); if (answer != NULL) { hPrintf(" (%s)", answer); } hPrintf(":</B></FONT>\n"); } hPrintf("<UL>\n"); } /* print protein entry, if it is not already displayed in the PB supported genome list */ if (!skipIt) { otherCnt++; if (sameWord(protAcc, protDisp)) { hPrintf("<LI><A HREF=\"../cgi-bin/pbGlobal?proteinID=%s\">", protAcc); hPrintf("%s</A> %s\n", protAcc, protDesc); } else { hPrintf("<LI><A HREF=\"../cgi-bin/pbGlobal?proteinID=%s\">", protAcc); if (strstr(protDisp, protAcc) != NULL) { hPrintf("%s</A> %s\n", protAcc, protDesc); } else { hPrintf("%s</A> (aka %s) %s\n", protAcc, protDisp, protDesc); } } } oldOrg = strdup(protOrg); row3 = sqlNextRow(sr3); } if (otherCnt == 0) hPrintf("</UL>None");fflush(stdout); sqlFreeResult(&sr3); sqlDisconnect(&conn3); } }