src/hg/hgTracks/searchTracks.c 1.9
1.9 2010/06/03 05:52:42 larrym
support simple and advanced tabs
Index: src/hg/hgTracks/searchTracks.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTracks/searchTracks.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -b -B -U 4 -r1.8 -r1.9
--- src/hg/hgTracks/searchTracks.c 30 May 2010 22:38:13 -0000 1.8
+++ src/hg/hgTracks/searchTracks.c 3 Jun 2010 05:52:42 -0000 1.9
@@ -138,18 +138,18 @@
char query[256];
struct sqlResult *sr = NULL;
char **row = NULL;
-if(strcmp(op, "contains"))
+if(sameString(op, "contains"))
if(name == NULL)
- safef(query, sizeof(query), "select distinct obj from metaDb where val = '%s'", val);
+ safef(query, sizeof(query), "select obj from metaDb where val like '%%%s%%'", val);
else
- safef(query, sizeof(query), "select obj from metaDb where var = '%s' and val = '%s'", name, val);
+ safef(query, sizeof(query), "select obj from metaDb where var = '%s' and val like '%%%s%%'", name, val);
else
if(name == NULL)
- safef(query, sizeof(query), "select obj from metaDb where val like '%%%s%%'", val);
+ safef(query, sizeof(query), "select distinct obj from metaDb where val = '%s'", val);
else
- safef(query, sizeof(query), "select obj from metaDb where var = '%s' and val like '%%%s%%'", name, val);
+ safef(query, sizeof(query), "select obj from metaDb where var = '%s' and val = '%s'", name, val);
sr = sqlGetResult(conn, query);
while ((row = sqlNextRow(sr)) != NULL)
{
slNameAddHead(&retval, row[0]);
@@ -190,11 +190,12 @@
char *labels[128];
int numGroups = 1;
groups[0] = ANYLABEL;
labels[0] = ANYLABEL;
+char *currentTab = cartUsualString(cart, "hgt.currentSearchTab", "simpleTab");
char *nameSearch = cartOptionalString(cart, "hgt.nameSearch");
char *nameOp = cartOptionalString(cart, "hgt.nameOp");
-char *descSearch = cartOptionalString(cart, "hgt.descSearch");
+char *descSearch;
char *groupSearch = cartOptionalString(cart, "hgt.groupSearch");
boolean doSearch = sameString(cartOptionalString(cart, searchTracks), "Search");
struct sqlConnection *conn = hAllocConn(database);
boolean metaDbExists = sqlTableExists(conn, "metaDb");
@@ -203,8 +204,22 @@
int numMetadataNonEmpty = 0;
char **metadataName;
char **metadataValue;
struct hash *parents = newHash(4);
+boolean simpleSearch;
+
+if(sameString(currentTab, "simpleTab"))
+ {
+ descSearch = cartOptionalString(cart, "hgt.simpleSearch");
+ simpleSearch = TRUE;
+ freez(&nameSearch);
+ freez(&groupSearch);
+ }
+else
+ {
+ descSearch = cartOptionalString(cart, "hgt.descSearch");
+ simpleSearch = FALSE;
+ }
getTrackList(&groupList, -2);
slSort(&groupList, gCmpGroup);
for (group = groupList; group != NULL; group = group->next)
@@ -218,23 +233,37 @@
internalErr();
}
}
-hPrintf("<form action='%s' name='SearchTracks' method='post'>\n\n", hgTracksName());
+hPrintf("<form action='%s' name='SearchTracks' method='get'>\n\n", hgTracksName());
webStartWrapperDetailedNoArgs(cart, database, "", "Track Search (prototype!)", FALSE, FALSE, FALSE, FALSE);
hPrintf("<input type='hidden' name='db' value='%s'>\n", database);
-hPrintf("<table>\n");
+fprintf(stderr, "currentTab: %s\n", currentTab);
+hPrintf("<input type='hidden' name='hgt.currentSearchTab' id='hgt.currentSearchTab' value='%s'>\n", currentTab);
-hPrintf("<tr><td></td><td><b>Description:</b></td><td>contains</td>\n");
+hPrintf("<div id='tabs'>\n"
+ "<ul>\n"
+ "<li><a href='#simpleTab'><span>Search</span></a></li>\n"
+ "<li><a href='#advancedTab'><span>Advanced Search</span></a></li>\n"
+ "</ul>\n"
+ "<div id='simpleTab'>\n");
+
+hPrintf("<input type='text' name='hgt.simpleSearch' value='%s' size='80'>\n", descSearch == NULL ? "" : descSearch);
+
+hPrintf("</div>\n"
+ "<div id='advancedTab'>\n"
+ "<table>\n");
+
+hPrintf("<tr><td></td><td></td><td><b>Description:</b></td><td>contains</td>\n");
hPrintf("<td><input type='text' name='hgt.descSearch' value='%s' size='80'></td></tr>\n", descSearch == NULL ? "" : descSearch);
-hPrintf("<tr><td>and</td><td><b>Track Name:</b></td><td>\n");
+hPrintf("<tr><td></td><td>and</td><td><b>Track Name:</b></td><td>\n");
cgiMakeDropListFull("hgt.nameOp", op_labels, ops, ArraySize(ops), nameOp == NULL ? "contains" : nameOp, NULL);
hPrintf("</td>\n<td><input type='text' name='hgt.nameSearch' value='%s'></td></tr>\n", nameSearch == NULL ? "" : nameSearch);
-hPrintf("<tr><td>and</td>\n");
+hPrintf("<tr><td></td><td>and</td>\n");
hPrintf("<td><b>Group</b></td><td>is</td>\n<td>\n");
cgiMakeDropListFull("hgt.groupSearch", labels, groups, numGroups, groupSearch, NULL);
hPrintf("</td></tr>\n");
@@ -260,16 +289,19 @@
{
char buf[256];
safef(buf, sizeof(buf), "%s%d", METADATA_NAME_PREFIX, i + 1);
metadataName[i] = cartOptionalString(cart, buf);
+ if(!simpleSearch)
+ {
safef(buf, sizeof(buf), "%s%d", METADATA_VALUE_PREFIX, i + 1);
metadataValue[i] = cartOptionalString(cart, buf);
- if(!strcmp(metadataValue[i], ANYLABEL))
+ if(sameString(metadataValue[i], ANYLABEL))
metadataValue[i] = NULL;
if(!isEmpty(metadataValue[i]))
numMetadataNonEmpty++;
}
}
+ }
else
{
// create defaults
numMetadataSelects = 2;
@@ -294,9 +326,16 @@
char **terms;
char buf[256];
int len;
- hPrintf("<tr><td>and</td>\n");
+ hPrintf("<tr><td>\n");
+
+ if(i == 0)
+ hPrintf(" \n");
+ else
+ hButtonWithOnClick("hgt.ignoreme", "+", "add a select", "alert('add a select is not yet implemented'); return false;");
+
+ hPrintf("</td><td>and</td>\n");
hPrintf("</td><td>\n");
safef(buf, sizeof(buf), "%s%i", METADATA_NAME_PREFIX, i + 1);
cgiMakeDropListClassWithStyleAndJavascript(buf, metaValues, count, metadataName[i],
NULL, NULL, "onchange=metadataSelectChanged(this)");
@@ -308,8 +347,11 @@
}
}
hPrintf("</table>\n");
+// hPrintf("<u><a onclick=\"alert('add a select not yet implemented')\" title=\"add a select\">+</a></u>");
+
+hPrintf("</div>\n</div>\n");
hPrintf("<input type='submit' name='%s' value='Search'>\n", searchTracks);
hPrintf("<input type='submit' name='submit' value='Cancel'>\n");
hPrintf("</form>\n");
@@ -356,9 +398,9 @@
}
for (group = groupList; group != NULL; group = group->next)
{
- if(groupSearch == NULL || !strcmp(group->name, groupSearch))
+ if(groupSearch == NULL || sameString(group->name, groupSearch))
{
if (group->trackList != NULL)
{
struct trackRef *tr;
@@ -399,22 +441,15 @@
hPrintf("<form action='%s' name='SearchTracks' method='post'>\n\n", hgTracksName());
hButton("submit", "save");
hButtonWithOnClick("hgt.ignoreme", "show all", "show all found tracks", "alert('show all not yet implemented'); return false;");
hPrintf("<table>\n");
- hPrintf("<tr bgcolor='#666666'><td><b>Name</b></td><td><b>Description</b></td><td><b>Group</b></td><td><br /></td></tr>\n");
+ hPrintf("<tr bgcolor='#666666'><td><br /></td><td><b>Name</b></td><td><b>Description</b></td><td><b>Group</b></td></tr>\n");
struct slRef *ptr;
while((ptr = slPopHead(&tracks)))
{
struct track *track = (struct track *) ptr->val;
// trackDbOutput(track->tdb, stderr, ',', '\n');
hPrintf("<tr bgcolor='#EEEEEE'>\n");
- hPrintf("<td>%s</td>\n", track->shortLabel);
- hPrintf("<td><a target='_top' href='%s'>%s</a></td>\n", trackUrl(track->track, NULL), track->longLabel);
- // How do we get subtrack's parent?
- struct track *parent = NULL;
- if(hashLookup(parents, track->track) != NULL)
- parent = (struct track *) hashLookup(parents, track->track)->val;
- hPrintf("<td>%s</td>\n", parent != NULL ? parent->longLabel : track->group != NULL ? track->group->label : "");
hPrintf("<td>\n");
if (tdbIsSuper(track->tdb))
{
superTrackDropDown(cart, track->tdb,
@@ -426,9 +461,17 @@
track->canPack, (track->visibility == tvHide) ?
"hiddenText" : "normalText",
trackDbSetting(track->tdb, "onlyVisibility"));
}
- hPrintf("</td></tr>\n");
+ hPrintf("</td>\n");
+ hPrintf("<td>%s</td>\n", track->shortLabel);
+ hPrintf("<td><a target='_top' href='%s'>%s</a></td>\n", trackUrl(track->track, NULL), track->longLabel);
+ // How do we get subtrack's parent?
+ struct track *parent = NULL;
+ if(hashLookup(parents, track->track) != NULL)
+ parent = (struct track *) hashLookup(parents, track->track)->val;
+ hPrintf("<td>%s</td>\n", parent != NULL ? parent->longLabel : track->group != NULL ? track->group->label : "");
+ hPrintf("</tr>\n");
}
hPrintf("</table>\n");
hButton("submit", "save");
hPrintf("\n</form>\n");