f6433b90aaa5892fd7ca02ca459c9beb31275238
kate
Tue Aug 1 12:40:15 2017 -0700
Add link to supertrack if any. refs #19350
diff --git src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c
index 4eda7a6..3ed2e70 100644
--- src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c
+++ src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c
@@ -7,30 +7,31 @@
#include "trackDb.h"
#include "cart.h"
#include "portable.h"
#include "cheapcgi.h"
#include "web.h"
#include "hCommon.h"
#include "hui.h"
#include "jsHelper.h"
#include "gtexUi.h"
#include "gtexInfo.h"
#include "gtexTissue.h"
/* Global Variables */
struct cart *cart = NULL; /* CGI and other variables */
struct hash *oldVars = NULL; /* Old contents of cart before it was updated by CGI */
+char *database = NULL;
static void printGoButton()
/* HTML for GO button and 'play' icon */
{
puts(
"
\n"
);
}
static void printBodyMap()
/* Include BodyMap SVG in HTML */
{
@@ -53,31 +54,50 @@
);
printf(
" \n"
" %s Track\n"
" %s \n"
" "
" %s \n"
, tdb->shortLabel, assembly, tdb->longLabel);
puts(
"\n"
" \n"
" \n"
" \n"
" \n"
" \n"
+);
+if (tdb->parent)
+ {
+ // link to supertrack
+ char *encodedMapName = cgiEncode(tdb->parent->track);
+ char *chromosome = cartUsualString(cart, "c", hDefaultChrom(database));
+ puts(" ");
+ printf(
+ " \n"
+ " \n"
+ " \n",
+ hgTrackUiName(), cartSessionVarName(), cartSessionId(cart),
+ chromosome, encodedMapName, tdb->parent->shortLabel
+ );
+ freeMem(encodedMapName);
+ }
+puts(
" \n"
+);
+puts(
" \n"
);
printGoButton();
puts(
"
\n"
" \n"
);
}
static void printVisSelect(struct trackDb *tdb)
/* Track visibility dropdown */
{
enum trackVisibility vis = tdb->visibility;
vis = hTvFromString(cartUsualString(cart, tdb->track, hStringFromTv(vis)));
boolean canPack = TRUE;
@@ -371,40 +391,50 @@
" \n");
}
static struct trackDb *getTrackDb(char *db, char *track)
/* Check if this is an assembly with GTEx track and get trackDb */
{
struct sqlConnection *conn = sqlConnect(db);
if (conn == NULL)
errAbort("Can't connect to database %s\n", db);
char where[256];
safef(where, sizeof(where), "tableName='%s'", track);
// WARNING: this will break in sandboxes unless trackDb entry is pushed to hgwdev.
// The fix of using hTrackDbList() would slow for all users, so leaving as is.
struct trackDb *tdb = trackDbLoadWhere(conn, "trackDb", where);
trackDbAddTableField(tdb);
+char *parent = trackDbLocalSetting(tdb, "parent");
+struct trackDb *parentTdb;
+if (parent)
+ {
+ safef(where, sizeof(where), "tableName='%s'", parent);
+ parentTdb = trackDbLoadWhere(conn, "trackDb", where);
+ if (parentTdb)
+ tdb->parent = parentTdb;
+ }
sqlDisconnect(&conn);
return tdb;
}
static void doMiddle(struct cart *theCart)
/* Send HTML with javascript to display the user interface. */
{
cart = theCart;
char *db = NULL, *genome = NULL, *clade = NULL;
getDbGenomeClade(cart, &db, &genome, &clade, oldVars);
+database = db;
// Start web page with new-style header
webStartGbNoBanner(cart, db, "Genome Browser GTEx Track Settings");
puts(""); // NOTE: This will likely go to web.c
puts("");
char *track = cartUsualString(cart, "g", "gtexGene");
struct trackDb *tdb = getTrackDb(db, track);
if (!tdb)
errAbort("No GTEx track %s found in database %s\n", track, db);
// Container for bootstrap grid layout
puts(
"\n");