a9405d57ee4b50c467268b539f8b66e408a5bc30
tdreszer
  Thu Mar 17 16:29:15 2011 -0700
Fixed bug with fileFilter link to hgEncodeVocab.
diff --git src/hg/lib/fileUi.c src/hg/lib/fileUi.c
index 07130e2..e46c8fe 100644
--- src/hg/lib/fileUi.c
+++ src/hg/lib/fileUi.c
@@ -357,51 +357,51 @@
             sIx++) ;
         if (sIx<sortOrder->count) // Found in sort Order so leave it in mdbObjs
             continue;
 
         char *val = mdbRemoveCommonVar(mdbObjs, commonTerms[tIx]); // All mdbs have it and have the same val for it.
         if (val)
             dyStringPrintf(dyCommon,"%s=%s ",commonTerms[tIx],val);
         }
     return dyStringCannibalize(&dyCommon);
     }
 return NULL;
 }
 
 #define FILTER_THE_FILES
 #ifdef FILTER_THE_FILES
-static char *labelWithVocabLink(char *var,char *title,struct slPair *valsAndLabels)
+static char *labelWithVocabLink(char *var,char *title,struct slPair *valsAndLabels,boolean tagsNotVals)
 /* If the parentTdb has a controlledVocabulary setting and the vocabType is found,
    then label will be wrapped with the link to all relevent terms.  Return string is cloned. */
 {
 // Determine if the var is cvDefined.  If not, simple link
 boolean cvDefined = FALSE;
 struct hash *cvTypesOfTerms = (struct hash *)mdbCvTermTypeHash();
 if (cvTypesOfTerms != NULL)
     {
     struct hash *cvTermDef = hashFindVal(cvTypesOfTerms,var);
     if (cvTermDef)
         cvDefined = SETTING_IS_ON(hashFindVal(cvTermDef,"cvDefined"));
     }
 
 struct dyString *dyLink = dyStringNew(256);
 if (!cvDefined)
     dyStringPrintf(dyLink,"<A HREF='hgEncodeVocab?type=%s' title='Click for details of \"%s\"' TARGET=ucscVocab>%s</A>",
                    var,title,title);
 else
     {
-    dyStringPrintf(dyLink,"<A HREF='hgEncodeVocab?term=");
+    dyStringPrintf(dyLink,"<A HREF='hgEncodeVocab?%s=",tagsNotVals?"tag":"term");
     struct slPair *oneVal = valsAndLabels;
     for(;oneVal!=NULL;oneVal=oneVal->next)
         {
         if (oneVal != valsAndLabels)
             dyStringAppendC(dyLink,',');
         dyStringAppend(dyLink,mdbPairVal(oneVal));
         }
     dyStringPrintf(dyLink,"' title='Click for details of each \"%s\"' TARGET=ucscVocab>%s</A>",title,title);
     }
 return dyStringCannibalize(&dyLink);
 }
 
 static int filterBoxesForFilesList(char *db,struct mdbObj *mdbObjs,sortOrder_t *sortOrder)
 {  // Will create filterBoxes for each sortOrder field.  Returns count of filterBoxes made
 int count = 0;
@@ -431,31 +431,31 @@
                 slAddHead(&relevantVals,oneVal);
                 }
             else
                 slPairFreeValsAndList(&oneVal);
             }
         if (slCount(relevantVals) > 1)
             {
             slReverse(&relevantVals);
             char extraClasses[256];
             safef(extraClasses,sizeof extraClasses,"filterTable %s",var);
             char *dropDownHtml = cgiMakeMultiSelectDropList(var,relevantVals,NULL,"All",extraClasses,"onchange='filterTable();' onclick='filterTableExclude(this);'");
             // Note filterBox has classes: filterBy & {var}
             if (dropDownHtml)
                 {
                 dyStringPrintf(dyFilters,"<td align='left'>\n<B>%s</B>:<BR>\n%s</td><td width=10>&nbsp;</td>\n",
-                               labelWithVocabLink(var,sortOrder->title[sIx],relevantVals),dropDownHtml);
+                               labelWithVocabLink(var,sortOrder->title[sIx],relevantVals,TRUE),dropDownHtml);  // TRUE were sending tags, not values
                 freeMem(dropDownHtml);
                 count++;
                 }
             }
         if (slCount(relevantVals) > 0)
             slPairFreeValsAndList(&relevantVals);
         }
     if (count)
         {
         webIncludeResourceFile("ui.dropdownchecklist.css");
         jsIncludeFile("ui.dropdownchecklist.js",NULL);
         #define FILTERBY_HELP_LINK  "<A HREF=\"../goldenPath/help/multiView.html\" TARGET=ucscHelp>help</A>"
         printf("<B>Filter files by:</B> (select multiple %sitems - %s)\n<table><tr valign='bottom'>\n",
                (count >= 1 ? "categories and ":""),FILTERBY_HELP_LINK);
         printf("%s\n",dyStringContents(dyFilters));