70dd30683fe3a9795bb81067da75d34521265577 kate Thu May 4 16:41:16 2017 -0700 Add custom track suport for type barChart. refs #18736 diff --git src/hg/hgTracks/bedTrack.c src/hg/hgTracks/bedTrack.c index 17ad9c4..eb54155 100644 --- src/hg/hgTracks/bedTrack.c +++ src/hg/hgTracks/bedTrack.c @@ -153,48 +153,57 @@ tg->itemName = bigBedItemName; calculateLabelFields(tg); for (bb = bbList; bb != NULL; bb = bb->next) { bigBedIntervalToRow(bb, chromName, startBuf, endBuf, bedRow, ArraySize(bedRow)); bed = loader(bedRow); bed->label = makeLabel(tg, bb); if (scoreFilter == NULL || bed->score >= minScore) slAddHead(&list, bed); } lmCleanup(&lm); } else { - struct sqlConnection *conn = hAllocConnTrack(database, tg->tdb); + char *table = tg->table; + struct customTrack *ct = tg->customPt; + struct sqlConnection *conn = NULL; + if (ct == NULL) + conn = hAllocConnTrack(database, tg->tdb); + else + { + conn = hAllocConn(CUSTOM_TRASH); + table = ct->dbTableName; + } struct sqlResult *sr = NULL; /* limit to items above a specified score */ char *scoreFilterClause = getScoreFilterClause(cart, tg->tdb,NULL); if (doScoreCtFilter && (topTable != NULL) && hTableExists(database, topTable)) { sqlSafef(query, sizeof(query),"select * from %s order by score desc limit %d", topTable, scoreFilterCt); sr = sqlGetResult(conn, query); rowOffset = hOffsetPastBin(database, hDefaultChrom(database), topTable); } else if(scoreFilterClause != NULL && tg->bedSize >= 5) { - sr = hRangeQuery(conn, tg->table, chromName, winStart, winEnd, scoreFilterClause, &rowOffset); + sr = hRangeQuery(conn, table, chromName, winStart, winEnd, scoreFilterClause, &rowOffset); } else { - sr = hRangeQuery(conn, tg->table, chromName, winStart, winEnd, NULL, &rowOffset); + sr = hRangeQuery(conn, table, chromName, winStart, winEnd, NULL, &rowOffset); } freeMem(scoreFilterClause); while ((row = sqlNextRow(sr)) != NULL) { bed = loader(row+rowOffset); slAddHead(&list, bed); } sqlFreeResult(&sr); hFreeConn(&conn); } if (doScoreCtFilter) { /* filter out items not in this window */ struct bed *newList = bedFilterListInRange(list, NULL, chromName, winStart, winEnd);