7544fd2a03bf573a9a12195d86a2fc082a88de78 tdreszer Tue Apr 5 15:17:56 2011 -0700 Tightened the screws on searching by mdb vars where the search is either for files or tables diff --git src/hg/hgTracks/searchTracks.c src/hg/hgTracks/searchTracks.c index d01c1e3..308277c 100644 --- src/hg/hgTracks/searchTracks.c +++ src/hg/hgTracks/searchTracks.c @@ -288,32 +288,30 @@ } else warn("found group track is NULL."); } if (track->subtracks != NULL) { struct track *subTrack; for (subTrack = track->subtracks; subTrack != NULL; subTrack = subTrack->next) { trackType = cloneFirstWord(subTrack->tdb->type); // will be spilled if((isEmpty(nameSearch) || isNameMatch(subTrack, nameSearch, "contains")) && (isEmpty(typeSearch) || sameWord(typeSearch, trackType)) && (isEmpty(descSearch) || isDescriptionMatch(subTrack, descWords, descWordCount)) && (!numMetadataNonEmpty || hashLookup(matchingTracks, subTrack->track) != NULL)) { - // XXXX to parent hash. - use tdb->parent instead. - //hashAdd(parents, subTrack->track, track); if (track != NULL) { tracksFound++; refAdd(&tracks, subTrack); } else warn("found subtrack is NULL."); } } } } } } } } @@ -533,49 +531,30 @@ { hPrintf("\n"); findTracksPageLinks(tracksFound,startFrom); hPrintf("\n"); } hPrintf("\n"); if(containerTrackCount > 0) hPrintf("
 Tracks so marked are containers which group related data tracks. Containers may need additional configuration (by clicking on the icon) before they can be viewed in the browser.
\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.

\n"); hPrintf("\n\n"); // be done with json hWrites(jsonTdbSettingsUse(&jsonTdbVars)); } -#ifdef OMIT -if(!doSearch) - { - hPrintf("

Recently Done

" - "

Suggested improvments:

\n"); - } -#endif///def OMIT hPrintf(""); // 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.core.js",NULL); // NOTE: This appears to be not needed as long as jquery-ui.js comes before ui.dropdownchecklist.js jsIncludeFile("ui.dropdownchecklist.js",NULL); // This line is needed to get the multi-selects initialized @@ -586,33 +565,30 @@ char *labels[128]; int numGroups = 1; groups[0] = ANYLABEL; labels[0] = ANYLABEL; char *nameSearch = cartOptionalString(cart, TRACK_SEARCH_ON_NAME); char *typeSearch = cartOptionalString(cart, TRACK_SEARCH_ON_TYPE); #ifdef FILES_SEARCH char *fileTypeSearch = cartOptionalString(cart, FILE_SEARCH_ON_FILETYPE); #endif///def FILES_SEARCH char *descSearch=FALSE; char *groupSearch = cartOptionalString(cart, TRACK_SEARCH_ON_GROUP); boolean doSearch = sameString(cartOptionalString(cart, TRACK_SEARCH), "Search") || cartUsualInt(cart, TRACK_SEARCH_PAGER, -1) >= 0; struct sqlConnection *conn = hAllocConn(database); boolean metaDbExists = sqlTableExists(conn, "metaDb"); int tracksFound = 0; -#ifdef ONE_FUNC -struct hash *parents = newHash(4); -#endif///def ONE_FUNC struct trix *trix; char trixFile[HDB_MAX_PATH_STRING]; char **descWords = NULL; int descWordCount = 0; boolean searchTermsExist = FALSE; int cols; char buf[512]; enum searchTab selectedTab = simpleTab; char *currentTab = cartUsualString(cart, TRACK_SEARCH_CURRENT_TAB, "simpleTab"); if(sameString(currentTab, "simpleTab")) { selectedTab = simpleTab; descSearch = cartOptionalString(cart, TRACK_SEARCH_SIMPLE); freez(&nameSearch); @@ -733,33 +709,33 @@ hPrintf("Data Format:"); hPrintf("is\n"); hPrintf("", cols - 4); char **formatTypes = NULL; char **formatLabels = NULL; int formatCount = getFormatTypes(&formatLabels, &formatTypes); cgiMakeDropListFull(TRACK_SEARCH_ON_TYPE, formatLabels, formatTypes, formatCount, typeSearch, "class='typeSearch' style='min-width:40%; font-size:.9em;'"); hPrintf("\n"); if (selectedTab==advancedTab && typeSearch) searchTermsExist = TRUE; // mdb selects struct slPair *mdbSelects = NULL; if(metaDbExists) { - struct slPair *mdbVars = mdbVarsRelevant(conn); + struct slPair *mdbVars = mdbVarsSearchable(conn,TRUE,FALSE); // Tables but not file only objects mdbSelects = mdbSelectPairs(cart,selectedTab, mdbVars); - char *output = mdbSelectsHtmlRows(conn,mdbSelects,mdbVars,cols); + char *output = mdbSelectsHtmlRows(conn,mdbSelects,mdbVars,cols,FALSE); // not a fileSearch if (output) { puts(output); freeMem(output); } slPairFreeList(&mdbVars); } hPrintf("\n"); hPrintf("\n", TRACK_SEARCH); hPrintf("\n"); hPrintf("\n"); //hPrintf("help\n"); hPrintf("\n"); @@ -805,33 +781,33 @@ hPrintf("is\n"); hPrintf("", cols - 4); char *dropDownHtml = fileFormatSelectHtml(FILE_SEARCH_ON_FILETYPE,fileTypeSearch,"style='min-width:40%; font-size:.9em;'"); if (dropDownHtml) { puts(dropDownHtml); freeMem(dropDownHtml); } hPrintf("\n"); if (selectedTab==filesTab && fileTypeSearch) searchTermsExist = TRUE; // mdb selects if(metaDbExists) { - struct slPair *mdbVars = mdbVarsRelevant(conn); + struct slPair *mdbVars = mdbVarsSearchable(conn,TRUE,FALSE); // Tables but not file only objects mdbSelects = mdbSelectPairs(cart,selectedTab, mdbVars); - char *output = mdbSelectsHtmlRows(conn,mdbSelects,mdbVars,cols); + char *output = mdbSelectsHtmlRows(conn,mdbSelects,mdbVars,colsFALSE); // not a fileSearch if (output) { puts(output); freeMem(output); } slPairFreeList(&mdbVars); } hPrintf("\n"); hPrintf("\n", TRACK_SEARCH); hPrintf("\n"); hPrintf("\n"); //hPrintf("help\n"); hPrintf("\n");