fa8c6c2c8140538f014381e43421163cc6c7eb98
kate
  Wed Jan 31 15:22:00 2018 -0800
Flesh out details page for interact track. refs #17512

diff --git src/hg/hgTracks/interactTrack.c src/hg/hgTracks/interactTrack.c
index 3e0afb9..6ad7e43 100644
--- src/hg/hgTracks/interactTrack.c
+++ src/hg/hgTracks/interactTrack.c
@@ -30,40 +30,30 @@
 struct rgbColor itemRgb;
 // There must be a better way...
 itemRgb.r = (inter->color & 0xff0000) >> 16;
 itemRgb.g = (inter->color & 0xff00) >> 8;
 itemRgb.b = inter->color & 0xff;
 //uglyf("IN color=%X", hvGfxFindColorIx(hvg, itemRgb.r, itemRgb.g, itemRgb.b));
 return hvGfxFindColorIx(hvg, itemRgb.r, itemRgb.g, itemRgb.b);
 }
 
 void interactLoadItems(struct track *tg)
 /* Load all interact items in region */
 {
 loadSimpleBedWithLoader(tg, (bedItemLoader)interactLoad);
 }
 
-char *getOtherChrom(struct interact *inter)
-/* Get other chromosome from an interaaction. Return NULL if same chromosome */
-{
-if (sameString(inter->sourceChrom, inter->targetChrom))
-    return NULL;
-if (inter->chromStart == inter->sourceStart)
-    return cloneString(inter->targetChrom);
-return cloneString(inter->sourceChrom);
-}
-
 static void interactDrawItems(struct track *tg, int seqStart, int seqEnd,
         struct hvGfx *hvg, int xOff, int yOff, int width, 
         MgFont *font, Color color, enum trackVisibility vis)
 /* Draw a list of interact structures. */
 {
 #define DRAW_LINE       0
 #define DRAW_CURVE      1
 #define DRAW_ELLIPSE    2
 
 char *drawMode = cartUsualStringClosestToHome(cart, tg->tdb, FALSE,
                                 INTERACT_DRAW, INTERACT_DRAW_DEFAULT);
 int draw  = DRAW_LINE;
 if (sameString(drawMode, INTERACT_DRAW_CURVE))
     draw = DRAW_CURVE;
 else if (sameString(drawMode, INTERACT_DRAW_ELLIPSE))
@@ -83,61 +73,61 @@
 // Suppress interchromosomal labels if they overlap
 int nSame = 0, nOther = 0;
 int prevLabelEnd = 0, prevLabelStart = 0;
 char *prevLabel = 0;
 boolean doOtherLabels = TRUE;
 char *otherChrom = NULL;
 for (inter=inters; inter; inter=inter->next)
     {
     int width = inter->chromEnd - inter->chromStart;
     if (width > maxWidth)
         maxWidth = width;
     }
 //uglyf("Max width is %d. ", maxWidth);
 for (inter=inters; inter; inter=inter->next)
     {
-    otherChrom = getOtherChrom(inter);
+    otherChrom = interactOtherChrom(inter);
     if (otherChrom == NULL)
         nSame++;
     else
         {
         nOther++;
         if (!doOtherLabels)
             continue;
         int labelWidth = vgGetFontStringWidth(hvg->vg, font, otherChrom);
         // TODO: simplify now that center approach is abandoned
         int sx = ((inter->chromStart - seqStart) + .5) * scale + xOff; // x coord of center
         int labelStart = (double)sx - labelWidth/2;
         int labelEnd = labelStart + labelWidth - 1;
         if (labelStart <= prevLabelEnd && 
                 !(labelStart == prevLabelStart && labelEnd == prevLabelEnd && 
                     sameString(otherChrom, prevLabel)))
             doOtherLabels = FALSE;
         prevLabelStart = labelStart;
         prevLabelEnd = labelEnd;
         prevLabel = otherChrom;
         }
     }
 int fontHeight = vgGetFontPixelHeight(hvg->vg, font);
 int otherHeight = (nOther) ? 3 * fontHeight : 0;
 int sameHeight = (nSame) ? tg->height - otherHeight: 0;
 
 // Draw items
 //uglyf("IN seqStart=%d", seqStart);
 for (inter=inters; inter; inter=inter->next)
     {
-    char *otherChrom = getOtherChrom(inter);
+    char *otherChrom = interactOtherChrom(inter);
     safef(itemBuf, sizeof itemBuf, "%s", inter->name);
     struct dyString *ds = dyStringNew(0);
     dyStringPrintf(ds, "%s", inter->name);
     if (inter->score)
         dyStringPrintf(ds, " %d", inter->score);
     char *statusBuf = dyStringCannibalize(&ds);
 //uglyf("statusBuf: %s. ", statusBuf);
 
     color = interactItemColor(tg, inter, hvg);
     
     // TODO: simplify by using start/end instead of center and width
     // This is a holdover from longRange track implementation
     unsigned lowStart, lowEnd, highStart, highEnd;
     if (otherChrom)
         {