src/hg/hgTracks/searchTracks.c 1.8

1.8 2010/05/30 22:38:13 larrym
trivial changes: metadata is one word
Index: src/hg/hgTracks/searchTracks.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTracks/searchTracks.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -b -B -U 4 -r1.7 -r1.8
--- src/hg/hgTracks/searchTracks.c	30 May 2010 04:00:39 -0000	1.7
+++ src/hg/hgTracks/searchTracks.c	30 May 2010 22:38:13 -0000	1.8
@@ -17,10 +17,10 @@
 
 static char const rcsid[] = "$Id$";
 
 #define ANYLABEL "Any"
-#define METADATA_NAME_PREFIX "hgt.metaDataName"
-#define METADATA_VALUE_PREFIX "hgt.metaDataValue"
+#define METADATA_NAME_PREFIX "hgt.metadataName"
+#define METADATA_VALUE_PREFIX "hgt.metadataValue"
 
 static int gCmpGroup(const void *va, const void *vb)
 /* Compare groups based on label. */
 {
@@ -131,9 +131,10 @@
 }
 
 static struct slName *metaDbSearch(struct sqlConnection *conn, char *name, char *val, char *op)
 {
-// Search the assemblies metaDb table; If name == NULL, we search every metadata field.
+// Search the assembly's metaDb table for var; If name == NULL, we search every metadata field.
+// Search is via mysql, so it's case-insensitive.
 struct slName *retval = NULL;
 char query[256];
 struct sqlResult *sr = NULL;
 char **row = NULL;
@@ -197,12 +198,12 @@
 boolean doSearch = sameString(cartOptionalString(cart, searchTracks), "Search");
 struct sqlConnection *conn = hAllocConn(database);
 boolean metaDbExists = sqlTableExists(conn, "metaDb");
 struct slRef *tracks = NULL;
-int numMetaDataSelects, tracksFound = 0;
-int numMetaDataNonEmpty = 0;
-char **metaDataName;
-char **metaDataValue;
+int numMetadataSelects, tracksFound = 0;
+int numMetadataNonEmpty = 0;
+char **metadataName;
+char **metadataValue;
 struct hash *parents = newHash(4);
 
 getTrackList(&groupList, -2);
 slSort(&groupList, gCmpGroup);
@@ -238,72 +239,72 @@
 hPrintf("</td></tr>\n");
 
 // figure out how many metadata selects are visible.
 
-for(numMetaDataSelects = 0;;)
+for(numMetadataSelects = 0;;)
     {
     char buf[256];
-    safef(buf, sizeof(buf), "%s%d", METADATA_NAME_PREFIX, numMetaDataSelects + 1);
+    safef(buf, sizeof(buf), "%s%d", METADATA_NAME_PREFIX, numMetadataSelects + 1);
     char *str = cartOptionalString(cart, buf);
     if(isEmpty(str))
         break;
     else
-        numMetaDataSelects++;
+        numMetadataSelects++;
     }
 
-if(numMetaDataSelects)
+if(numMetadataSelects)
     {
-    metaDataName = needMem(sizeof(char *) * numMetaDataSelects);
-    metaDataValue = needMem(sizeof(char *) * numMetaDataSelects);
+    metadataName = needMem(sizeof(char *) * numMetadataSelects);
+    metadataValue = needMem(sizeof(char *) * numMetadataSelects);
     int i;
-    for(i = 0; i < numMetaDataSelects; i++)
+    for(i = 0; i < numMetadataSelects; i++)
         {
         char buf[256];
         safef(buf, sizeof(buf), "%s%d", METADATA_NAME_PREFIX, i + 1);
-        metaDataName[i] = cartOptionalString(cart, buf);
+        metadataName[i] = cartOptionalString(cart, buf);
         safef(buf, sizeof(buf), "%s%d", METADATA_VALUE_PREFIX, i + 1);
-        metaDataValue[i] = cartOptionalString(cart, buf);
-        if(!strcmp(metaDataValue[i], ANYLABEL))
-            metaDataValue[i] = NULL;
-        if(!isEmpty(metaDataValue[i]))
-            numMetaDataNonEmpty++;
+        metadataValue[i] = cartOptionalString(cart, buf);
+        if(!strcmp(metadataValue[i], ANYLABEL))
+            metadataValue[i] = NULL;
+        if(!isEmpty(metadataValue[i]))
+            numMetadataNonEmpty++;
         }
     }
 else
     {
     // create defaults
-    numMetaDataSelects = 2;
-    metaDataName = needMem(sizeof(char *) * numMetaDataSelects);
-    metaDataValue = needMem(sizeof(char *) * numMetaDataSelects);
-    metaDataName[0] = "cell";
-    metaDataName[1] = "antibody";
-    metaDataValue[0] = ANYLABEL;
-    metaDataValue[1] = ANYLABEL;
+    numMetadataSelects = 2;
+    metadataName = needMem(sizeof(char *) * numMetadataSelects);
+    metadataValue = needMem(sizeof(char *) * numMetadataSelects);
+    metadataName[0] = "cell";
+    metadataName[1] = "antibody";
+    metadataValue[0] = ANYLABEL;
+    metadataValue[1] = ANYLABEL;
     }
 
-fprintf(stderr, "numMetaDataSelects: %d: %d\n", numMetaDataSelects, numMetaDataNonEmpty);
+fprintf(stderr, "numMetadataSelects: %d: %d\n", numMetadataSelects, numMetadataNonEmpty);
 
 if(metaDbExists)
     {
     int i;
     char **metaValues = NULL;
     int count = metaDbVars(conn, &metaValues);
 
-    for(i = 0; i < numMetaDataSelects; i++)
+    for(i = 0; i < numMetadataSelects; i++)
         {
         char **terms;
         char buf[256];
         int len;
 
         hPrintf("<tr><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=metaPulldownChanged(this)");
+        cgiMakeDropListClassWithStyleAndJavascript(buf, metaValues, count, metadataName[i], 
+                                                   NULL, NULL, "onchange=metadataSelectChanged(this)");
         hPrintf("</td><td>is</td>\n<td>\n");
-        len = getTermList(conn, &terms, metaDataName[i]);
+        len = getTermList(conn, &terms, metadataName[i]);
         safef(buf, sizeof(buf), "%s%i", METADATA_VALUE_PREFIX, i + 1);
-        cgiMakeDropListFull(buf, terms, terms, len, metaDataValue[i], NULL);
+        cgiMakeDropListFull(buf, terms, terms, len, metadataValue[i], NULL);
         hPrintf("</td></tr>\n");
         }
     }
 
@@ -316,20 +317,20 @@
 if(descSearch != NULL && !strlen(descSearch))
     descSearch = NULL;
 if(groupSearch != NULL && sameString(groupSearch, ANYLABEL))
     groupSearch = NULL;
-if(doSearch && ((nameSearch != NULL && strlen(nameSearch)) || descSearch != NULL || groupSearch != NULL || numMetaDataNonEmpty))
+if(doSearch && ((nameSearch != NULL && strlen(nameSearch)) || descSearch != NULL || groupSearch != NULL || numMetadataNonEmpty))
     {
     // First do the metaDb searches, which can be done quickly for all tracks with db queries.
     struct hash *matchingTracks = newHash(0);
     struct hash *trackMetadata = newHash(0);
     struct slName *el, *metaTracks = NULL;
     int i;
-    for(i = 0; i < numMetaDataSelects; i++)
+    for(i = 0; i < numMetadataSelects; i++)
         {
-        if(!isEmpty(metaDataValue[i]))
+        if(!isEmpty(metadataValue[i]))
             {
-            struct slName *tmp = metaDbSearch(conn, metaDataName[i], metaDataValue[i], "is");
+            struct slName *tmp = metaDbSearch(conn, metadataName[i], metadataValue[i], "is");
             if(metaTracks == NULL)
                 metaTracks = tmp;
             else
                 metaTracks = slNameIntersection(metaTracks, tmp);
@@ -365,9 +366,9 @@
                     {
                     struct track *track = tr->track;
                     if((isEmpty(nameSearch) || isNameMatch(track, nameSearch, nameOp)) && 
                        (isEmpty(descSearch) || isDescriptionMatch(track, descSearch, trackMetadata)) &&
-                       (!numMetaDataNonEmpty || hashLookup(matchingTracks, track->track) != NULL))
+                       (!numMetadataNonEmpty || hashLookup(matchingTracks, track->track) != NULL))
                         {
                         tracksFound++;
                         refAdd(&tracks, track);
                         }
@@ -377,9 +378,9 @@
                         for (subTrack = track->subtracks; subTrack != NULL; subTrack = subTrack->next)
                             {
                             if((isEmpty(nameSearch) || isNameMatch(subTrack, nameSearch, nameOp)) &&
                                (isEmpty(descSearch) || isDescriptionMatch(subTrack, descSearch, trackMetadata)) &&
-                               (!numMetaDataNonEmpty || hashLookup(matchingTracks, subTrack->track) != NULL))
+                               (!numMetadataNonEmpty || hashLookup(matchingTracks, subTrack->track) != NULL))
                                 {
                                 // XXXX to parent hash. - use tdb->parent instead.
                                 hashAdd(parents, subTrack->track, track);
                                 tracksFound++;
@@ -436,5 +437,6 @@
         {
         hPrintf("<p>No tracks found</p>\n");
         }
     }
+webEndSectionTables();
 }