aba9ee18d932daaa659dc3298c0ea4db250fc704 tdreszer Tue Aug 24 15:47:41 2010 -0700 Added clear button and fixed bombing simple search, among other things diff --git src/hg/hgTracks/searchTracks.c src/hg/hgTracks/searchTracks.c index 95573ab..447af60 100644 --- src/hg/hgTracks/searchTracks.c +++ src/hg/hgTracks/searchTracks.c @@ -231,6 +231,7 @@ char trixFile[HDB_MAX_PATH_STRING]; char **descWords = NULL; int descWordCount = 0; +boolean searchTermsExist = FALSE; if(sameString(currentTab, "simpleTab")) { @@ -277,10 +278,14 @@ "\n" "
\n"); -hPrintf("\n", descSearch == NULL ? "" : descSearch); +hPrintf("\n", descSearch == NULL ? "" : descSearch); +if (simpleSearch && descSearch) + searchTermsExist = TRUE; -hPrintf("
\n", searchTracks); -hPrintf("\n"); +hPrintf("
"); +hPrintf("\n", searchTracks,(searchTermsExist && !doSearch?"":" disabled=true")); +hPrintf("\n",(searchTermsExist || doSearch?"":" disabled=true")); +hPrintf("\n"); hPrintf("
\n" "
\n" "\n"); @@ -290,15 +295,21 @@ //char *op_labels[] = {"is", "contains"}; //char *nameOp = cartOptionalString(cart, "hgt.nameOp"); //cgiMakeDropListFull("hgt.nameOp", op_labels, ops, ArraySize(ops), nameOp == NULL ? "contains" : nameOp, NULL); -hPrintf("\n\n", nameSearch == NULL ? "" : nameSearch); +hPrintf("\n\n", nameSearch == NULL ? "" : nameSearch); +if (!simpleSearch && nameSearch) + searchTermsExist = TRUE; hPrintf("\n"); -hPrintf("\n", descSearch == NULL ? "" : descSearch); +hPrintf("\n", descSearch == NULL ? "" : descSearch); +if (!simpleSearch && descSearch) + searchTermsExist = TRUE; hPrintf("\n"); hPrintf("\n\n"); +if (!simpleSearch && groupSearch) + searchTermsExist = TRUE; // figure out how many metadata selects are visible. @@ -397,19 +408,22 @@ hPrintf("\n\n"); } } hPrintf("
andDescription:contains
andGroupis\n"); -cgiMakeDropListFull("hgt.groupSearch", labels, groups, numGroups, groupSearch, NULL); +cgiMakeDropListFull("hgt.groupSearch", labels, groups, numGroups, groupSearch, "class='groupSearch'"); hPrintf("
\n"); safef(buf, sizeof(buf), "%s%i", METADATA_NAME_PREFIX, i + 1); cgiMakeDropListClassWithStyleAndJavascript(buf, metaValues, count, metadataName[i], - NULL, NULL, "onchange=metadataSelectChanged(this)"); + "mdbVar", NULL, "onchange=findTracksMdbVarChanged(this)"); hPrintf("is\n"); len = getTermArray(conn, &terms, metadataName[i]); safef(buf, sizeof(buf), "%s%i", METADATA_VALUE_PREFIX, i + 1); - cgiMakeDropListFull(buf, terms, terms, len, metadataValue[i], NULL); + cgiMakeDropListFull(buf, terms, terms, len, metadataValue[i], "class='mdbVal' onchange='findTracksSearchButtonsEnable(true)'"); + if(!simpleSearch && metadataValue[i]) + searchTermsExist = TRUE; hPrintf("
\n"); -hPrintf("\n", searchTracks); -hPrintf("\n"); +hPrintf("\n", searchTracks,(searchTermsExist && !doSearch?"":" disabled=true")); +hPrintf("\n",(searchTermsExist || doSearch?"":" disabled=true")); +hPrintf("\n"); hPrintf("
\n\n"); hPrintf("\n"); @@ -461,9 +475,14 @@ for(tsList = trixSearch(trix, descWordCount, descWords, TRUE); tsList != NULL; tsList = tsList->next) { struct track *track = (struct track *) hashFindVal(trackHash, tsList->itemId); + if(track != NULL) + { refAdd(&tracks, track); tracksFound++; } + //else // FIXME: Should get to the bottom of why some of these are null + // warn("found trix track is NULL."); + } slReverse(&tracks); } else if(!isEmpty(nameSearch) || descSearch != NULL || groupSearch != NULL || numMetadataNonEmpty) @@ -518,9 +537,14 @@ (isEmpty(descSearch) || isDescriptionMatch(track, descWords, descWordCount)) && (!numMetadataNonEmpty || hashLookup(matchingTracks, track->track) != NULL)) { + if(track != NULL) + { tracksFound++; refAdd(&tracks, track); } + else + warn("found group track is NULL."); + } if (track->subtracks != NULL) { struct track *subTrack; @@ -532,9 +556,14 @@ { // 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."); + } } } } @@ -545,6 +574,7 @@ } } +hPrintf("