59c4b5446987113a20a88c2860c469ae14dcc0b9 larrym Thu Jul 28 21:39:44 2011 -0700 switch to using in-memory json; refactor trackDbJson so it is part of hgTracks global in the client (redmine #4550) diff --git src/hg/hgTracks/searchTracks.c src/hg/hgTracks/searchTracks.c index d6a1790..6cb9905 100644 --- src/hg/hgTracks/searchTracks.c +++ src/hg/hgTracks/searchTracks.c @@ -462,42 +462,42 @@ // Sort options? if(tracksFound >= ENOUGH_FOUND_TRACKS) { hPrintf("<span style='float:right;'>Sort:"); cgiMakeOnClickRadioButton(TRACK_SEARCH_SORT, "0", (sortBy == sbRelevance),"onclick=\"findTracksSortNow(this);\""); hPrintf("by Relevance"); cgiMakeOnClickRadioButton(TRACK_SEARCH_SORT, "1", (sortBy == sbAbc), "onclick=\"findTracksSortNow(this);\""); hPrintf("Alphabetically"); cgiMakeOnClickRadioButton(TRACK_SEARCH_SORT, "2",(sortBy == sbHierarchy), "onclick=\"findTracksSortNow(this);\""); hPrintf("by Hierarchy </span>\n"); } hPrintf("</td></tr>\n"); // Set up json for js functionality - struct dyString *jsonTdbVars = NULL; + struct jsonHashElement *jsonTdbVars = newJsonHash(newHash(8)); int trackCount=0; boolean containerTrackCount = 0; struct slRef *ptr; while((ptr = slPopHead(&tracks))) { if(++trackCount > MAX_FOUND_TRACKS) break; struct track *track = (struct track *) ptr->val; - jsonTdbSettingsBuild(&jsonTdbVars, track, FALSE); // FALSE: No configuration from track search + jsonTdbSettingsBuild(jsonTdbVars, track, FALSE); // FALSE: No configuration from track search if (tdbIsFolder(track->tdb)) // supertrack hPrintf("<tr class='bgLevel4' valign='top' class='found'>\n"); else if (tdbIsContainer(track->tdb)) hPrintf("<tr class='bgLevel3' valign='top' class='found'>\n"); else hPrintf("<tr class='bgLevel2' valign='top' class='found'>\n"); hPrintf("<td align='center'>\n"); // Determine visibility and checked state track->visibility = tdbVisLimitedByAncestors(cart, track->tdb, TRUE, TRUE); boolean checked = ( track->visibility != tvHide ); if(tdbIsContainerChild(track->tdb)) { @@ -559,31 +559,31 @@ hPrintf(" <span class='selCbCount'></span>"); if(tracksFound >= ENOUGH_FOUND_TRACKS) { hPrintf("</td><td align='right' valign='top'>\n"); findTracksPageLinks(tracksFound,startFrom); hPrintf("</td></tr>\n"); } hPrintf("</table>\n"); if(containerTrackCount > 0) hPrintf("<BR><IMG SRC='../images/folderWrench.png'> Tracks so marked are containers which group related data tracks. Containers may need additional configuration (by clicking on the <IMG SRC='../images/folderWrench.png'> icon) before they can be viewed in the browser.<BR>\n"); //hPrintf("* Tracks so marked are containers which group related data tracks. These may not be visible unless further configuration is done. Click on the * to configure these.<BR><BR>\n"); hPrintf("\n</form>\n"); // be done with json - hWrites(jsonTdbSettingsUse(&jsonTdbVars)); + jsonTdbSettingsUse(jsonTdbVars); } hPrintf("</div>"); // This div allows the clear button to empty it } void doSearchTracks(struct group *groupList) { if (!advancedJavascriptFeaturesEnabled(cart)) { warn("Requires advanced javascript features."); return; } webIncludeResourceFile("ui.dropdownchecklist.css"); jsIncludeFile("ui.dropdownchecklist.js",NULL); // This line is needed to get the multi-selects initialized