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;
}
}
}