96bb082b01866c65273531541c20204851c47380
larrym
  Fri Aug 13 00:30:54 2010 -0700
move trackDbJson code into imageV2.c and print it out from w/n imageBoxDraw to fix problems with subtracks
diff --git src/hg/hgTracks/imageV2.c src/hg/hgTracks/imageV2.c
index ea10f72..676bb11 100644
--- src/hg/hgTracks/imageV2.c
+++ src/hg/hgTracks/imageV2.c
@@ -1540,9 +1540,32 @@
     hPrintf("</div>");
 }
 
+#if defined(CONTEXT_MENU) || defined(TRACK_SEARCH)
+static void trackJson(struct dyString *trackDbJson, struct track *track, int count)
+{
+// add entry for given track to the trackDbJson string
+if(count)
+    dyStringAppend(trackDbJson, "\n,");
+dyStringPrintf(trackDbJson, "\t%s: {", track->track);
+if(tdbIsSuperTrackChild(track->tdb) || tdbIsCompositeChild(track->tdb))
+    dyStringPrintf(trackDbJson, "\n\t\tparentTrack: '%s',", track->tdb->parent->track);
+dyStringPrintf(trackDbJson, "\n\t\ttype: '%s',", track->tdb->type);
+if(sameWord(track->tdb->type, "remote") && trackDbSetting(track->tdb, "url") != NULL)
+    dyStringPrintf(trackDbJson, "\n\t\turl: '%s',", trackDbSetting(track->tdb, "url"));
+dyStringPrintf(trackDbJson, "\n\t\tshortLabel: '%s',\n\t\tlongLabel: '%s',\n\t\tcanPack: %d,\n\t\tvisibility: %d\n\t}",
+               javaScriptLiteralEncode(track->shortLabel), javaScriptLiteralEncode(track->longLabel), track->canPack, track->limitedVis);
+}
+#endif/// defined(CONTEXT_MENU) || defined(TRACK_SEARCH)
+
 void imageBoxDraw(struct imgBox *imgBox)
 /* writes a entire imgBox including all tracksas HTML */
 {
+#if defined(CONTEXT_MENU) || defined(TRACK_SEARCH)
+struct dyString *trackDbJson = newDyString(1000);
+int trackDbJsonCount = 1;
+dyStringPrintf(trackDbJson, "<script>var trackDbJson = {\nruler: {shortLabel: 'ruler', longLabel: 'Base Position Controls', canPack: 0, visibility: %d}", rulerMode);
+#endif/// defined(CONTEXT_MENU) || defined(TRACK_SEARCH)
+
 if(imgBox->imgTracks == NULL)  // Not an error to have an empty image
     return;
 imgBoxDropEmpties(imgBox);
@@ -1607,6 +1630,13 @@
 for(;imgTrack!=NULL;imgTrack=imgTrack->next)
     {
     char *trackName = (imgTrack->name != NULL ? imgTrack->name : imgTrack->tdb->track );
+#if defined(CONTEXT_MENU) || defined(TRACK_SEARCH)
+    struct track *track = hashFindVal(trackHash, trackName);
+    if(track)
+        {
+	trackJson(trackDbJson, track, trackDbJsonCount++);
+        }
+#endif
     //if(verbose && imgTrack->order == 3)
     //    imgTrackShow(NULL,imgTrack,0);
     hPrintf("<TR id='tr_%s' abbr='%d' class='imgOrd%s'>\n",trackName,imgTrack->order,
@@ -1661,4 +1691,10 @@
     }
 hPrintf("</TABLE>\n");
 hPrintf("<!---------------^^^ IMAGEv2 ^^^---------------->\n");
+
+#if defined(CONTEXT_MENU) || defined(TRACK_SEARCH)
+dyStringAppend(trackDbJson, "}\n</script>\n");
+if(!trackImgOnly)
+    hPrintf(dyStringContents(trackDbJson));
+#endif/// defined(CONTEXT_MENU) || defined(TRACK_SEARCH)
 }