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);