37a331259beee4fa8ebe7aa7f4d5b9d765a14c7f kent Thu Jan 6 15:45:34 2011 -0800 Starting to make hgHubConnect talk with hgTracks and hgTrackUi. Right now the tracks appear on the track list, but are not displaying properly. diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c index f8cb7c4..e5a97ab 100644 --- src/hg/hgTrackUi/hgTrackUi.c +++ src/hg/hgTrackUi/hgTrackUi.c @@ -19,30 +19,32 @@ #include "hgMaf.h" #include "obscure.h" #include "chainCart.h" #include "chainDb.h" #include "gvUi.h" #include "oregannoUi.h" #include "chromGraph.h" #include "hgConfig.h" #include "customTrack.h" #include "dbRIP.h" #include "tfbsConsSites.h" #include "hapmapSnps.h" #include "nonCodingUi.h" #include "expRecord.h" #include "wikiTrack.h" +#include "hubConnect.h" +#include "trackHub.h" #include "pcrResult.h" #include "dgv.h" #include "transMapStuff.h" #define MAIN_FORM "mainForm" #define WIGGLE_HELP_PAGE "../goldenPath/help/hgWiggleTrackHelp.html" static char const rcsid[] = "$Id: hgTrackUi.c,v 1.527 2010/06/04 21:54:56 angie Exp $"; struct cart *cart = NULL; /* Cookie cart with UI settings */ char *database = NULL; /* Current database. */ char *chromosome = NULL; /* Chromosome. */ struct hash *trackHash = NULL; /* Hash of all tracks in database. */ void tfbsConsSitesUi(struct trackDb *tdb) @@ -2679,30 +2681,52 @@ tdb = trackDbForOligoMatch(); else if (sameWord(track, CUTTERS_TRACK_NAME)) tdb = trackDbForPseudoTrack(CUTTERS_TRACK_NAME, CUTTERS_TRACK_LABEL, CUTTERS_TRACK_LONGLABEL, tvHide, TRUE); else if (isCustomTrack(track)) { ctList = customTracksParseCart(database, cart, NULL, NULL); for (ct = ctList; ct != NULL; ct = ct->next) { if (sameString(track, ct->tdb->track)) { tdb = ct->tdb; break; } } } +else if (isHubTrack(track)) + { + int hubId = hubIdFromTrackName(track); + struct sqlConnection *conn = hConnectCentral(); + struct hubConnectStatus *hubStatus = hubConnectStatusForId(conn, hubId); + hDisconnectCentral(&conn); + if (hubStatus == NULL) + errAbort("The hubId %d was not found", hubId); + if (!isEmpty(hubStatus->errorMessage)) + errAbort("Hub %s at %s has the error: %s", hubStatus->shortLabel, + hubStatus->hubUrl, hubStatus->errorMessage); + char hubName[16]; + safef(hubName, sizeof(hubName), "%d", hubId); + struct trackHub *hub = trackHubOpen(hubStatus->hubUrl, hubName); + struct trackHubGenome *hubGenome = trackHubFindGenome(hub, database); + struct trackDb *tdbList = trackHubTracksForGenome(hub, hubGenome); + tdbList = trackDbLinkUpGenerations(tdbList); + rAddTrackListToHash(trackHash, tdbList, chromosome, FALSE); + tdb = hashFindVal(trackHash, track); + if (tdb == NULL) + errAbort("Can't find track %s in %s", track, hubStatus->hubUrl); + } else if (sameString(track, "hgPcrResult")) tdb = pcrResultFakeTdb(); else { tdb = hTrackDbForTrack(database, track); } if (tdb == NULL) { uglyAbort("Can't find %s in track database %s chromosome %s. TrackHash has %d els", track, database, chromosome, trackHash->elCount); errAbort("Can't find %s in track database %s chromosome %s", track, database, chromosome); } char *super = trackDbGetSupertrackName(tdb); if (super)