src/hg/lib/hui.c 1.191

1.191 2009/05/05 22:37:28 tdreszer
Use metadata setting for controlled vocabulary look up and for restriction date lookup
Index: src/hg/lib/hui.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/hui.c,v
retrieving revision 1.190
retrieving revision 1.191
diff -b -B -U 4 -r1.190 -r1.191
--- src/hg/lib/hui.c	30 Apr 2009 15:55:29 -0000	1.190
+++ src/hg/lib/hui.c	5 May 2009 22:37:28 -0000	1.191
@@ -2753,49 +2753,42 @@
     }
 }
 
 char *encodeRestrictionDateDisplay(struct trackDb *trackDb)
-/* Create a string for ENCODE restriction date of this track */
+/* Create a string for ENCODE restriction date of this track
+   if return is not null, then free it after use */
 {
 if (!trackDb)
     return NULL;
-char *date = NULL;
 boolean addMonths = FALSE;
-metadata_t *metadata = metadataSettingGet(trackDb);
-if(metadata != NULL)
-    {
-    int ix=0;
-    for(;ix<metadata->count;ix++)
-        {
-        if (sameString(metadata->tags[ix],"dateUnrestricted"))
-            {
-            date = metadata->values[ix];
-            addMonths = FALSE;
-            break;
-            }
-        else  if (date == NULL && sameString(metadata->tags[ix],"dateSubmitted"))
+char *date = metadataSettingFind(trackDb,"dateUnrestricted");
+if(date == NULL)
             {
-            date = metadata->values[ix];
+    date = metadataSettingFind(trackDb,"dateSubmitted");
             addMonths = TRUE;
             }
-        }
-    }
 if(date == NULL)
-    date = trackDbSetting(trackDb, "dateUnrestricted");
-if(date != NULL)
+    {
     addMonths = FALSE;
-else
+    date = trackDbSetting(trackDb, "dateUnrestricted");
+    if(date)
+        date = cloneString(date); // all returns should be freeable memory
+    }
+if(date == NULL)
     {
-    addMonths = TRUE;
     date = trackDbSetting(trackDb, "dateSubmitted");
+    if(date)
+        {
+        addMonths = TRUE;
+        date = cloneString(date); // all returns should be freeable memory
+        }
     }
 if (date != NULL)
     {
-    date = strSwapChar(cloneString(date), ' ', 0);   // Truncate time
+    date = strSwapChar(date, ' ', 0);   // Truncate time
     if(addMonths)
         date = dateAddToAndFormat(date, "%F", 0, 9, 0);
     }
-metadataFree(&metadata);
 return date;
 }
 
 static void compositeUiSubtracks(char *db, struct cart *cart, struct trackDb *parentTdb,
@@ -4426,9 +4419,9 @@
 if((count = chopByWhite(cloneString(vocab), words,15)) <= 1)
     return cloneString(label);
 for(ix=1;ix<count && !found;ix++)
     {
-#define VOCAB_LINK "<A HREF='hgEncodeVocab?ra=/usr/local/apache/cgi-bin/%s&term=\"%s\"' TARGET=_BLANK>%s</A>\n"
+#define VOCAB_LINK "<A HREF='hgEncodeVocab?ra=/usr/local/apache/cgi-bin/%s&term=\"%s\"' TARGET=ucscVocab>%s</A>\n"
     if(sameString(vocabType,words[ix])) // controlledVocabulary setting matches tag so all labels are linked
         {
         int sz=strlen(VOCAB_LINK)+strlen(words[0])+strlen(words[ix])+strlen(label) + 2;
         char *link=needMem(sz);
@@ -4441,15 +4434,16 @@
         strSwapChar(words[ix],'=',0);
         if(sameString(vocabType,words[ix]))  // tags match, but search for term
             {
             char * cvSetting = words[ix] + strlen(words[ix]) + 1;
-            char * cvTerm = trackDbSetting(childTdb, cvSetting);
+            char * cvTerm = metadataSettingFind(childTdb, cvSetting);
             if(cvTerm != NULL)
                 {
                 int sz=strlen(VOCAB_LINK)+strlen(words[0])+strlen(cvTerm)+strlen(label) + 2;
                 char *link=needMem(sz);
                 safef(link,sz,VOCAB_LINK,words[0],cvTerm,label);
                 freeMem(words[0]);
+                freeMem(cvTerm);
                 return link;
                 }
             }
         }