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