src/hg/lib/hui.c 1.265
1.265 2010/03/19 21:23:51 tdreszer
Added support for hgTrackUi to support metadata from metaTbl instead of trackDb
Index: src/hg/lib/hui.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/hui.c,v
retrieving revision 1.264
retrieving revision 1.265
diff -b -B -U 4 -r1.264 -r1.265
--- src/hg/lib/hui.c 3 Mar 2010 19:30:02 -0000 1.264
+++ src/hg/lib/hui.c 19 Mar 2010 21:23:51 -0000 1.265
@@ -21,8 +21,9 @@
#include "hgMaf.h"
#include "udc.h"
#include "customTrack.h"
#include "encode/encodePeak.h"
+#include "metaTbl.h"
static char const rcsid[] = "$Id$";
#define SMALLBUF 128
@@ -86,9 +87,9 @@
}
return FALSE;
}
-boolean metadataToggle(struct trackDb *tdb,char *title,boolean embeddedInText,boolean showLongLabel)
+static boolean metadataInTdbToggle(struct trackDb *tdb,char *title,boolean embeddedInText,boolean showLongLabel)
/* If metadata exists, create a link that will allow toggling it's display */
{
metadata_t *metadata = metadataSettingGet(tdb);
if(metadata != NULL)
@@ -126,8 +127,53 @@
}
return FALSE;
}
+static boolean metadataToggle(char *db,struct trackDb *tdb,char *title,boolean embeddedInText,boolean showLongLabel)
+/* If metadata from metaTbl if it exists, create a link that will allow toggling it's display */
+{
+struct metaObj *metaObj = metaObjQueryByObj(db,NULL,tdb->tableName,NULL);
+if(metaObj != NULL && metaObj->vars != NULL)
+ {
+ printf("%s<A HREF='#a_meta_%s' onclick='return metadataShowHide(\"%s\");' title='Show metadata details...'>%s</A>",
+ (embeddedInText?" ":"<P>"),tdb->tableName,tdb->tableName, title);
+ printf("<DIV id='div_%s_meta' style='display:none;'><!--<table>",tdb->tableName);
+ if(showLongLabel)
+ printf("<tr onmouseover=\"this.style.cursor='text';\"><td colspan=2>%s</td></tr>",tdb->longLabel);
+ printf("<tr onmouseover=\"this.style.cursor='text';\"><td align=right><i>shortLabel:</i></td><td nowrap>%s</td></tr>",tdb->shortLabel);
+
+ metaObjRemoveVars(metaObj,"composite project tableName"); // Don't bother showing these (suggest: "composite project dataType view tableName")
+ // FIXME: Leaving tableName out as s clear difference between netaTbl and trackDb setting. Could add back in if desired.
+ metaObjReorderVars(metaObj,"grant lab dataType cell treatment antibody protocol input view",FALSE); // Bring to front
+ metaObjReorderVars(metaObj,"subId submittedDataVersion dateSubmitted dateResubmitted dateUnrestricted dataVersion tableName fileName",TRUE); // Send to back
+ struct metaVar *metaVar;
+ for(metaVar=metaObj->vars;metaVar!=NULL;metaVar=metaVar->next)
+ {
+ if(sameString(metaVar->var,"fileName"))
+ {
+ printf("<tr onmouseover=\"this.style.cursor='text';\"><td align=right><i>%s:</i></td><td nowrap>",metaVar->var);
+ makeNamedDownloadsLink(trackDbTopLevelSelfOrParent(tdb), metaVar->val);
+ printf("</td></tr>");
+ }
+ else
+ {
+ // If antibody and metadata contains input={sameValue} then just print input
+ if(sameString(metaVar->var,"antibody") && metaObjContains(metaObj,"input",metaVar->val))
+ continue;
+
+ printf("<tr onmouseover=\"this.style.cursor='text';\"><td align=right><i>%s:</i></td><td nowrap>%s</td></tr>",metaVar->var,metaVar->val);
+ }
+ }
+ printf("</table>--></div>");
+ metaObjsFree(&metaObj);
+ return TRUE;
+ }
+else
+ return metadataInTdbToggle(tdb,title,embeddedInText,showLongLabel); // FIXME: This should be removed when all metadata is in metaTbl!!!
+
+return FALSE;
+}
+
void extraUiLinks(char *db,struct trackDb *tdb)
/* Show downlaods, schema and metadata links where appropriate */
{
boolean schemaLink = (isCustomTrack(tdb->tableName) == FALSE)
@@ -156,9 +202,9 @@
if(metadataLink)
printf(",");
}
if (metadataLink)
- metadataToggle(tdb,"metadata", TRUE, TRUE);
+ metadataToggle(db,tdb,"metadata", TRUE, TRUE);
if(moreThanOne)
printf("</td></tr></table>");
puts("</P>");
@@ -3431,9 +3477,9 @@
}
printf ("<TD nowrap='true' title='select to copy' onmouseover=\"this.style.cursor='text';\"><div> %s", subtrack->longLabel);
if(trackDbSetting(parentTdb, "wgEncode") && trackDbSetting(subtrack, "accession"))
printf (" [GEO:%s]", trackDbSetting(subtrack, "accession"));
- metadataToggle(subtrack,"...",TRUE,FALSE);
+ metadataToggle(db,subtrack,"...",TRUE,FALSE);
printf("</div>");
if(cType != cfgNone)
{