4bb360f5b63ad116129e8063dc1d9c730cecdd89 larrym Tue Jan 24 12:04:16 2012 -0800 Load trackList only if we have to; this will speedup entry page (see #5675) diff --git src/hg/hgTracks/searchTracks.c src/hg/hgTracks/searchTracks.c index 768a99f..ed3b3ab 100644 --- src/hg/hgTracks/searchTracks.c +++ src/hg/hgTracks/searchTracks.c @@ -557,64 +557,43 @@ jsIncludeFile("ui.dropdownchecklist.js",NULL); // This line is needed to get the multi-selects initialized jsIncludeFile("ddcl.js",NULL); struct group *group; char *groups[128]; char *labels[128]; int numGroups = 1; groups[0] = ANYLABEL; labels[0] = ANYLABEL; char *nameSearch = cartOptionalString(cart, TRACK_SEARCH_ON_NAME); char *typeSearch = cartUsualString( cart, TRACK_SEARCH_ON_TYPE,ANYLABEL); char *simpleEntry = cartOptionalString(cart, TRACK_SEARCH_SIMPLE); char *descSearch = cartOptionalString(cart, TRACK_SEARCH_ON_DESCR); char *groupSearch = cartUsualString( cart, TRACK_SEARCH_ON_GROUP,ANYLABEL); -boolean doSearch = sameString(cartOptionalString(cart, TRACK_SEARCH), "Search") || cartUsualInt(cart, TRACK_SEARCH_PAGER, -1) >= 0; +boolean doSearch = sameWord(cartString(cart, TRACK_SEARCH), "Search") || cartUsualInt(cart, TRACK_SEARCH_PAGER, -1) >= 0; struct sqlConnection *conn = hAllocConn(database); boolean metaDbExists = sqlTableExists(conn, "metaDb"); int tracksFound = 0; boolean searchTermsExist = FALSE; int cols; char buf[512]; char *currentTab = cartUsualString(cart, TRACK_SEARCH_CURRENT_TAB, "simpleTab"); enum searchTab selectedTab = (sameString(currentTab, "advancedTab") ? advancedTab : simpleTab); if(selectedTab == simpleTab && !isEmpty(simpleEntry)) // NOTE: could support quotes in simple tab by detecting quotes and choosing to use doesNameMatch() || doesDescriptionMatch() stripChar(simpleEntry, '"'); -trackList = getTrackList(&groupList, -2); // global -makeGlobalTrackHash(trackList); - -// NOTE: This is necessary when container cfg by '*' results in vis changes -// This will handle composite/view override when subtrack specific vis exists, AND superTrack reshaping. -parentChildCartCleanup(trackList,cart,oldVars); // Subtrack settings must be removed when composite/view settings are updated - -slSort(&groupList, gCmpGroup); -for (group = groupList; group != NULL; group = group->next) - { - groupTrackListAddSuper(cart, group); - if (group->trackList != NULL) - { - groups[numGroups] = cloneString(group->name); - labels[numGroups] = cloneString(group->label); - numGroups++; - if (numGroups >= ArraySize(groups)) - internalErr(); - } - } - safef(buf, sizeof(buf),"Search for Tracks in the %s %s Assembly", organism, hFreezeFromDb(database)); webStartWrapperDetailedNoArgs(cart, database, "", buf, FALSE, FALSE, FALSE, FALSE); hPrintf("<div style='max-width:1080px;'>"); hPrintf("<form action='%s' name='%s' id='%s' method='get'>\n\n", hgTracksName(),TRACK_SEARCH_FORM,TRACK_SEARCH_FORM); cartSaveSession(cart); // Creates hidden var of hgsid to avoid bad voodoo safef(buf, sizeof(buf), "%lu", clock1()); cgiMakeHiddenVar("hgt_", buf); // timestamps page to avoid browser cache hPrintf("<input type='hidden' name='db' value='%s'>\n", database); hPrintf("<input type='hidden' name='%s' id='currentTab' value='%s'>\n", TRACK_SEARCH_CURRENT_TAB, currentTab); hPrintf("<input type='hidden' name='%s' value=''>\n",TRACK_SEARCH_DEL_ROW); hPrintf("<input type='hidden' name='%s' value=''>\n",TRACK_SEARCH_ADD_ROW); hPrintf("<input type='hidden' name='%s' value=''>\n",TRACK_SEARCH_PAGER); @@ -709,30 +688,51 @@ hPrintf("</div>\n"); hPrintf("</div>\n"); hPrintf("</form>\n"); hPrintf("</div>"); // Restricts to max-width:1000px; cgiDown(0.8); if (measureTiming) measureTime("Rendered tabs"); if(doSearch) { // Now search struct slRef *tracks = NULL; + trackList = getTrackList(&groupList, -2); // global + makeGlobalTrackHash(trackList); + + // NOTE: This is necessary when container cfg by '*' results in vis changes + // This will handle composite/view override when subtrack specific vis exists, AND superTrack reshaping. + parentChildCartCleanup(trackList,cart,oldVars); // Subtrack settings must be removed when composite/view settings are updated + + slSort(&groupList, gCmpGroup); + for (group = groupList; group != NULL; group = group->next) + { + groupTrackListAddSuper(cart, group); + if (group->trackList != NULL) + { + groups[numGroups] = cloneString(group->name); + labels[numGroups] = cloneString(group->label); + numGroups++; + if (numGroups >= ArraySize(groups)) + internalErr(); + } + } + if(selectedTab==simpleTab && !isEmpty(simpleEntry)) tracks = simpleSearchForTracksstruct(simpleEntry); else if(selectedTab==advancedTab) tracks = advancedSearchForTracks(conn,groupList,nameSearch,typeSearch,descSearch,groupSearch,mdbSelects); if (measureTiming) measureTime("Searched for tracks"); // Sort and Print results if(selectedTab!=filesTab) { enum sortBy sortBy = cartUsualInt(cart,TRACK_SEARCH_SORT,sbRelevance); tracksFound = slCount(tracks); if(tracksFound > 1) findTracksSort(&tracks,sortBy);