src/hg/hgTrackUi/hgTrackUi.c 1.473
1.473 2009/02/23 22:55:04 angie
Added dgvUi: filter items by publication reference.
Index: src/hg/hgTrackUi/hgTrackUi.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTrackUi/hgTrackUi.c,v
retrieving revision 1.472
retrieving revision 1.473
diff -b -B -U 4 -r1.472 -r1.473
--- src/hg/hgTrackUi/hgTrackUi.c 9 Feb 2009 19:42:22 -0000 1.472
+++ src/hg/hgTrackUi/hgTrackUi.c 23 Feb 2009 22:55:04 -0000 1.473
@@ -31,8 +31,9 @@
#include "nonCodingUi.h"
#include "expRecord.h"
#include "wikiTrack.h"
#include "pcrResult.h"
+#include "dgv.h"
#include "transMapStuff.h"
#define MAIN_FORM "mainForm"
#define WIGGLE_HELP_PAGE "../goldenPath/help/hgWiggleTrackHelp.html"
@@ -2153,8 +2154,51 @@
}
baseColorDrawOptDropDown(cart, tdb);
}
+void dgvUi(struct trackDb *tdb)
+/* Database of Genomic Variants: filter by publication. */
+{
+struct sqlConnection *conn = hAllocConn(database);
+struct sqlResult *sr;
+char **row;
+char query[256];
+safef(query, sizeof(query),
+ "select reference,pubMedId from %s group by pubMedId order by reference;", tdb->tableName);
+sr = sqlGetResult(conn, query);
+printf("<BR><B>Filter by publication reference:</B>\n");
+char cartVarName[256];
+safef (cartVarName, sizeof(cartVarName), "hgt_%s_filterType", tdb->tableName);
+boolean isExclude = sameString("exclude", cartUsualString(cart, cartVarName, "exclude"));
+cgiMakeRadioButton(cartVarName, "exclude", isExclude);
+printf("exclude\n");
+cgiMakeRadioButton(cartVarName, "include", !isExclude);
+printf("include<BR>\n");
+safef (cartVarName, sizeof(cartVarName), "hgt_%s_filterPmId", tdb->tableName);
+struct slName *checked = cartOptionalSlNameList(cart, cartVarName);
+#define MAX_DGV_REFS 128
+char *labelArr[MAX_DGV_REFS], *valueArr[MAX_DGV_REFS];
+int refCount = 0;
+while ((row = sqlNextRow(sr)) != NULL)
+ {
+ char *ref = row[0];
+ char *pmId = row[1];
+ char label[512];
+ safef(label, sizeof(label),
+ "<A HREF=\"http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed"
+ "&list_uids=%s&dopt=Abstract&tool=genome.ucsc.edu\" TARGET=_BLANK>%s</A>", pmId, ref);
+ labelArr[refCount] = cloneString(label);
+ valueArr[refCount++] = cloneString(pmId);
+ if (refCount >= MAX_DGV_REFS)
+ errAbort("dgvUi: %s has too many references (max %d)", tdb->tableName, MAX_DGV_REFS);
+ }
+sqlFreeResult(&sr);
+jsMakeCheckboxGroupSetClearButton(cartVarName, TRUE);
+jsMakeCheckboxGroupSetClearButton(cartVarName, FALSE);
+cgiMakeCheckboxGroupWithVals(cartVarName, labelArr, valueArr, refCount, checked, 4);
+hFreeConn(&conn);
+}
+
void superTrackUi(struct trackDb *superTdb)
/* List tracks in this collection, with visibility controls and UI links */
{
@@ -2337,8 +2381,10 @@
else if (sameString(track, "hapmapSnps"))
hapmapSnpsUi(tdb);
else if (sameString(track, "switchDbTss"))
switchDbScoreUi(tdb);
+else if (sameString(track, "dgv") || (startsWith("dgvV", track) && isdigit(track[4])))
+ dgvUi(tdb);
else if (tdb->type != NULL)
{
/* handle all tracks with type genePred or bed or "psl xeno <otherDb>" */
char *typeLine = cloneString(tdb->type);