b72a20927c99eeca3a0ef62593c53def29878bfe max Mon Dec 5 18:33:18 2011 -0800 patches to t2g to make it work even if no article/sequence table exist diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c index bea1589..0f600f4 100644 --- src/hg/hgTracks/simpleTracks.c +++ src/hg/hgTracks/simpleTracks.c @@ -12145,40 +12145,56 @@ for(s = str; *s; s++) { if(*s < 32 || !isalnum(*s)) *s = ' '; } struct kxTok *kx = kxTokenize(str, FALSE); for( ; kx != NULL; kx = kx->next) { char *str = kx->string; toLowerN(str, strlen(str)); hashAddInt(hash, str, 1); } } +char* t2gArticleTable(struct track *tg) +/* return the name of the t2g articleTable, either + * the value from the trackDb statement 'articleTable' + * or the default value: <trackName>Article */ +{ +char* articleTable = NULL; +articleTable = trackDbSetting(tg->tdb, "articleTable"); +if (articleTable==NULL) { + char* buf = needMem(128); + sprintf(buf, "%sArticle", tg->track); + articleTable = buf; +} +return articleTable; +} + static void t2gLoadItems(struct track *tg) /* apply filter to t2g items */ { loadGappedBed(tg); struct linkedFeatures *lf, *next, *newList = NULL; struct sqlConnection *conn = hAllocConn(database); -char *articleTable = trackDbSetting(tg->tdb, "articleTable"); +char *articleTable = t2gArticleTable(tg); char *keyWords = cartOptionalString(cart, "t2gKeywords"); -if(articleTable != NULL && isNotEmpty(keyWords)) + +if(isNotEmpty(keyWords)) { for( lf = tg->items; lf != NULL; lf = next) { char query[512]; struct sqlResult *sr; char **row; next = lf->next; lf->next = NULL; safef(query, sizeof(query), "select authors, title, citation, abstract from %s where displayId = '%s'", articleTable, lf->name); sr = sqlGetResult(conn, query); if ((row = sqlNextRow(sr)) != NULL) { struct hash *hash = newHash(0); boolean pass = TRUE; @@ -12204,31 +12220,31 @@ sqlFreeResult(&sr); } tg->items = newList; } hFreeConn(&conn); } static void t2gMapItem(struct track *tg, struct hvGfx *hvg, void *item, char *itemName, char *mapItemName, int start, int end, int x, int y, int width, int height) { if(!theImgBox || tg->limitedVis != tvDense || !tdbIsCompositeChild(tg->tdb)) { char query[1024], title[4096]; char *label = NULL; - char *articleTable = trackDbSetting(tg->tdb, "articleTable"); + char *articleTable = t2gArticleTable(tg); if(!isEmpty(articleTable)) { struct sqlConnection *conn = hAllocConn(database); safef(query, sizeof(query), "select title from %s where displayId = '%s'", articleTable, mapItemName); label = sqlQuickQuery(conn, query, title, sizeof(title)); hFreeConn(&conn); } if(isEmpty(label)) label = mapItemName; mapBoxHc(hvg, start, end, x, y, width, height, tg->track, mapItemName, label); } } static void t2gMethods(struct track *tg) {