170c44b6f3a9a8fdd67693fe8c1f6116d8d8a7ef tdreszer Tue Aug 17 17:44:32 2010 -0700 Adding support for popup cfg even though there is currently some duplicated code diff --git src/hg/hgTracks/searchTracks.c src/hg/hgTracks/searchTracks.c index 101fd15..9a4a0b1 100644 --- src/hg/hgTracks/searchTracks.c +++ src/hg/hgTracks/searchTracks.c @@ -177,6 +177,34 @@ return i; } +// FIXME: This code is duplicated in imageV2!!! +// FIXME: This code is duplicated in imageV2!!! +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)) + { + dyStringPrintf(trackDbJson, "\n\t\tparentTrack: '%s',", track->tdb->parent->track); + dyStringPrintf(trackDbJson, "\n\t\tparentLabel: '%s',", track->tdb->parent->shortLabel); + } +else if(tdbIsCompositeChild(track->tdb)) + { + struct trackDb *parentTdb = trackDbCompositeParent(track->tdb); + dyStringPrintf(trackDbJson, "\n\t\tparentTrack: '%s',", parentTdb->track); + dyStringPrintf(trackDbJson, "\n\t\tparentLabel: '%s',", parentTdb->shortLabel); + } +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); +} +// FIXME: This code is duplicated in imageV2!!! +// FIXME: This code is duplicated in imageV2!!! + void doSearchTracks(struct group *groupList) { struct group *group; @@ -539,10 +567,16 @@ hPrintf("<INPUT TYPE=SUBMIT NAME='submit' VALUE='View in Browser' class='viewBtn'>"); hPrintf(" <FONT class='selCbCount'></font>"); } + + // Set up json for js functionality + 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); + hPrintf("<table><tr><td colspan='2'>\n"); hPrintf("</td><td align='right'>\n"); #define PM_BUTTON "<IMG height=18 width=18 onclick=\"return findTracksCheckAllWithWait(%s);\" id='btn_%s' src='../images/%s' title='%s all found tracks'>" - hPrintf("</td></tr><tr bgcolor='%s'><td>",HG_COL_HEADER); + hPrintf("</td></tr><tr bgcolor='#%s'><td>",HG_COL_HEADER); printf(PM_BUTTON,"true", "plus_all", "add_sm.gif", "Select"); printf(PM_BUTTON,"false","minus_all","remove_sm.gif","Unselect"); hPrintf("</td><td><b>Visibility</b></td><td><b>Name</b></td><td><b>Description</b></td></tr>\n"); @@ -556,6 +590,8 @@ break; struct track *track = (struct track *) ptr->val; + trackJson(trackDbJson, track, trackDbJsonCount++); + // trackDbOutput(track->tdb, stderr, ',', '\n'); hPrintf("<tr bgcolor='%s' valign='top' class='found%s%s'>\n",COLOR_BG_ALTDEFAULT, (tdbIsCompositeChild(track->tdb)?" subtrack":""), @@ -617,7 +653,10 @@ hTvDropDownClassWithJavascript(NULL, track->visibility,track->canPack,"normalText seenVis",extra); } hPrintf("</td>\n"); + if(tdbIsSuper(track->tdb) || tdbIsComposite(track->tdb)) hPrintf("<td><a target='_top' href='%s' title='Configure track...'>%s</a></td>\n", trackUrl(track->track, NULL), track->shortLabel); + else + hPrintf("<td><a target='_top' onclick='hgTrackUiPopUp(\"%s\"); return false;' href='%s' title='Configure track...'>%s</a></td>\n", track->track, trackUrl(track->track, NULL), track->shortLabel); hPrintf("<td>%s", track->longLabel); compositeMetadataToggle(database, track->tdb, "...", TRUE, FALSE, tdbHash); hPrintf("</td></tr>\n"); @@ -627,6 +666,10 @@ hPrintf(" <FONT class='selCbCount'></font>"); hPrintf("<script type='text/javascript'>findTracksNormalizeFound();</script>\n"); hPrintf("\n</form>\n"); + + // be done with json + dyStringAppend(trackDbJson, "}\n</script>\n"); + hPrintf(dyStringCannibalize(&trackDbJson)); } hPrintf("<p><b>Recently Done</b><ul>\n"