0dc6764668fc5dd1f4374f847c7607f62ae82704 tdreszer Thu Oct 21 17:14:37 2010 -0700 Mostly refiguring to ensure shorter 'get' URL. Paging will remember previous selections but may remove this code. diff --git src/hg/hgTracks/searchTracks.c src/hg/hgTracks/searchTracks.c index 21d567b..8f48df0 100644 --- src/hg/hgTracks/searchTracks.c +++ src/hg/hgTracks/searchTracks.c @@ -20,11 +20,24 @@ #include "jsHelper.h" #include "imageV2.h" -static char const rcsid[] = "$Id: searchTracks.c,v 1.11 2010/06/11 18:21:40 larrym Exp $"; +#ifndef TRACK_SEARCH +void doSearchTracks(struct group *groupList) +{ + return; +} +#else///ifdef TRACK_SEARCH #define ANYLABEL "Any" -#define METADATA_NAME_PREFIX "hgt.metadataName" -#define METADATA_VALUE_PREFIX "hgt.metadataValue" +#define TRACK_SEARCH_FORM "trackSearch" +#define SEARCH_RESULTS_FORM "searchResults" +#define METADATA_NAME_PREFIX "hgt_mdbVar" +#define METADATA_VALUE_PREFIX "hgt_mdbVal" +#define TRACK_SEARCH_CURRENT_TAB "tsCurTab" +#define TRACK_SEARCH_SIMPLE "tsSimple" +#define TRACK_SEARCH_ON_NAME "tsName" +#define TRACK_SEARCH_ON_GROUP "tsGroup" +#define TRACK_SEARCH_ON_DESCR "tsDescr" +#define TRACK_SEARCH_SORT "tsSort" static int gCmpGroup(const void *va, const void *vb) /* Compare groups based on label. */ @@ -35,7 +48,6 @@ } // Would like to do a radio button choice ofsorts -#define SORT_BY_VAR "hgt_sortFound" enum sortBy { sbRelevance=0, @@ -269,8 +281,8 @@ // Prints a table of mdb selects if appropriate and returns number of them { // figure out how many metadata selects are visible. -int delSearchSelect = cartUsualInt(cart, "hgt.delRow", 0); // 1-based row to delete -int addSearchSelect = cartUsualInt(cart, "hgt.addRow", 0); // 1-based row to insert after +int delSearchSelect = cartUsualInt(cart, TRACK_SEARCH_DEL_ROW, 0); // 1-based row to delete +int addSearchSelect = cartUsualInt(cart, TRACK_SEARCH_ADD_ROW, 0); // 1-based row to insert after int numMetadataSelects = 0; char **mdbVar = NULL; char **mdbVal = NULL; @@ -370,13 +382,13 @@ if(numMetadataSelects > 2 || i >= 2) { safef(buf, sizeof(buf), "return delSearchSelect(this, %d);", i + 1); - PRINT_BUTTON(searchTracks, "-", "delete this row", buf); + PRINT_BUTTON(TRACK_SEARCH, "-", "delete this row", buf); } else hPrintf(" "); hPrintf("</td><td>\n"); safef(buf, sizeof(buf), "return addSearchSelect(this, %d);", i + 1); - PRINT_BUTTON(searchTracks, "+", "add another row after this row", buf); + PRINT_BUTTON(TRACK_SEARCH, "+", "add another row after this row", buf); hPrintf("</td><td>and </td><td colspan=3 nowrap>\n"); safef(buf, sizeof(buf), "%s%i", METADATA_NAME_PREFIX, i + 1); @@ -494,25 +506,28 @@ } #define MAX_FOUND_TRACKS 100 -#define FOUND_TRACKS_PAGING "hgt_startFrom" static void findTracksPageLinks(int tracksFound, int startFrom) { if (tracksFound <= MAX_FOUND_TRACKS) return; // Opener +int willStartAt = 0; int curPage = (startFrom/MAX_FOUND_TRACKS) + 1; int endAt = startFrom+MAX_FOUND_TRACKS; if (endAt > tracksFound) endAt = tracksFound; -hPrintf("<span style='font-size:.9em;'><em>Listing %d - %d of %d tracks</em> ",startFrom+1,endAt,tracksFound); +hPrintf("<span><em style='font-size:.9em;'>Listing %d - %d of %d tracks</em> ",startFrom+1,endAt,tracksFound); // << and < -hPrintf("<a href='' title='First page of found tracks' onclick='return findTracksPage(\"%s\",%d);'><<</a> ",FOUND_TRACKS_PAGING,0); if (startFrom >= MAX_FOUND_TRACKS) - hPrintf(" <a href='' title='Previous page of found tracks' onclick='return findTracksPage(\"%s\",%d);'><</a> ",FOUND_TRACKS_PAGING,startFrom - MAX_FOUND_TRACKS); -else - hPrintf(" <em><</em> "); + { + hPrintf("<a href='../cgi-bin/hgTracks?%s=Search&%s=0' title='First page of found tracks' onclick='return findTracksPage(\"%s\",0);'>«</a> ", + TRACK_SEARCH,TRACK_SEARCH_PAGER,TRACK_SEARCH_PAGER); + willStartAt = startFrom - MAX_FOUND_TRACKS; + hPrintf(" <a href='../cgi-bin/hgTracks?%s=Search&%s=%d' title='Previous page of found tracks' onclick='return findTracksPage(\"%s\",%d);'>‹</a> ", + TRACK_SEARCH,TRACK_SEARCH_PAGER,willStartAt,TRACK_SEARCH_PAGER,willStartAt); + } // page number links int lastPage = (tracksFound/MAX_FOUND_TRACKS); @@ -526,26 +541,29 @@ { if (thisPage != curPage) { - int willStartAt = ((thisPage - 1) * MAX_FOUND_TRACKS); + willStartAt = ((thisPage - 1) * MAX_FOUND_TRACKS); endAt = willStartAt+ MAX_FOUND_TRACKS; if (endAt > tracksFound) endAt = tracksFound; - hPrintf(" <a href='' title='Page %d (%d - %d) tracks' onclick='return findTracksPage(\"%s\",%d);'>%d</a> ", - thisPage,willStartAt+1,endAt,FOUND_TRACKS_PAGING,((thisPage - 1) * MAX_FOUND_TRACKS),thisPage); + hPrintf(" <a href='../cgi-bin/hgTracks?%s=Search&%s=%d' title='Page %d (%d - %d) tracks' onclick='return findTracksPage(\"%s\",%d);'>%d</a> ", + TRACK_SEARCH,TRACK_SEARCH_PAGER,willStartAt,thisPage,willStartAt+1,endAt,TRACK_SEARCH_PAGER,willStartAt,thisPage); } else - hPrintf(" <em>%d</em> ",thisPage); + hPrintf(" <em style='color:%s;'>%d</em> ",COLOR_DARKGREY,thisPage); } // > and >> if ((startFrom + MAX_FOUND_TRACKS) < tracksFound) - hPrintf(" <a href='' title='Next page of found tracks' onclick='return findTracksPage(\"%s\",%d);'>></a> ",FOUND_TRACKS_PAGING,(startFrom + MAX_FOUND_TRACKS)); -else - hPrintf(" <em>></em> "); -thisPage = tracksFound - (tracksFound % MAX_FOUND_TRACKS); -if (thisPage == tracksFound) - thisPage -= MAX_FOUND_TRACKS; -hPrintf(" <a href='' title='Last page of found tracks' onclick='return findTracksPage(\"%s\",%d);'>>></a></span>\n",FOUND_TRACKS_PAGING,thisPage); + { + willStartAt = startFrom + MAX_FOUND_TRACKS; + hPrintf(" <a href='../cgi-bin/hgTracks?%s=Search&%s=%d' title='Next page of found tracks' onclick='return findTracksPage(\"%s\",%d);'>›</a> ", + TRACK_SEARCH,TRACK_SEARCH_PAGER,willStartAt,TRACK_SEARCH_PAGER,willStartAt); + willStartAt = tracksFound - (tracksFound % MAX_FOUND_TRACKS); + if (willStartAt == tracksFound) + willStartAt -= MAX_FOUND_TRACKS; + hPrintf(" <a href='../cgi-bin/hgTracks?%s=Search&%s=%d' title='Last page of found tracks' onclick='return findTracksPage(\"%s\",%d);'>»</a></span>\n", + TRACK_SEARCH,TRACK_SEARCH_PAGER,willStartAt,TRACK_SEARCH_PAGER,willStartAt); + } } static void displayFoundTracks(struct cart *cart, struct slRef *tracks, int tracksFound,enum sortBy sortBy) @@ -559,7 +577,7 @@ else { struct hash *tdbHash = makeTrackHash(database, chromName); - hPrintf("<form action='%s' name='SearchTracks' id='searchResultsForm' method='post'>\n\n", hgTracksName()); + hPrintf("<form action='%s' name='%s' id='%s' method='post'>\n\n", hgTracksName(),SEARCH_RESULTS_FORM,SEARCH_RESULTS_FORM); cartSaveSession(cart); // Creates hidden var of hgsid to avoid bad voodoo int startFrom = 0; @@ -570,10 +588,10 @@ if(tracksFound >= ENOUGH_FOUND_TRACKS) { hPrintf("<tr><td nowrap colspan=3>\n"); - hPrintf("<INPUT TYPE=SUBMIT NAME='submit' VALUE='Return to Browser' class='viewBtn' style='font-size:.9em;'>"); + hPrintf("<INPUT TYPE=SUBMIT NAME='submit' VALUE='Return to Browser' class='viewBtn' style='font-size:.8em;'>"); hPrintf(" <FONT class='selCbCount'></font>\n"); - startFrom = cartUsualInt(cart,FOUND_TRACKS_PAGING,0); + startFrom = cartUsualInt(cart,TRACK_SEARCH_PAGER,0); if (startFrom > 0 && startFrom < tracksFound) { int countUp = 0; @@ -602,11 +620,11 @@ if(tracksFound >= ENOUGH_FOUND_TRACKS) { hPrintf("<span style='float:right;'>Sort:"); - cgiMakeOnClickRadioButton(SORT_BY_VAR, "0", (sortBy == sbRelevance),"onchange=\"findTracksSortNow(this);\""); + cgiMakeOnClickRadioButton(TRACK_SEARCH_SORT, "0", (sortBy == sbRelevance),"onchange=\"findTracksSortNow(this);\""); hPrintf("by Relevance"); - cgiMakeOnClickRadioButton(SORT_BY_VAR, "1", (sortBy == sbAbc), "onchange=\"findTracksSortNow(this);\""); + cgiMakeOnClickRadioButton(TRACK_SEARCH_SORT, "1", (sortBy == sbAbc), "onchange=\"findTracksSortNow(this);\""); hPrintf("Alphabetically"); - cgiMakeOnClickRadioButton(SORT_BY_VAR, "2",(sortBy == sbHierarchy), "onchange=\"findTracksSortNow(this);\""); + cgiMakeOnClickRadioButton(TRACK_SEARCH_SORT, "2",(sortBy == sbHierarchy), "onchange=\"findTracksSortNow(this);\""); hPrintf("by Hierarchy </span>\n"); } hPrintf("</td></tr>\n"); @@ -671,8 +689,7 @@ if (tdbIsContainer(track->tdb) || tdbIsFolder(track->tdb)) { containerTrackCount++; - //hPrintf(" <a href='hgTrackUi?db=%s&g=%s&hgt_searchTracks=1&hgt_searchTracks=Search' title='Configure this container track...'>*</a> ",database,track->track); - hPrintf(" <a href='hgTrackUi?db=%s&g=%s&%s=Search' title='Configure this container track...'><IMG SRC='../images/folderWrench.png'></a> ",database,track->track,searchTracks); + hPrintf(" <a href='hgTrackUi?db=%s&g=%s&%s=Search' title='Configure this container track...'><IMG SRC='../images/folderWrench.png'></a> ",database,track->track,TRACK_SEARCH); } hPrintf("</td>\n"); @@ -686,7 +703,7 @@ // Closing view in browser button and foundTracks count hPrintf("<tr><td nowrap colspan=3>"); - hPrintf("<INPUT TYPE=SUBMIT NAME='submit' VALUE='Return to Browser' class='viewBtn' style='font-size:.9em;'>"); + hPrintf("<INPUT TYPE=SUBMIT NAME='submit' VALUE='Return to Browser' class='viewBtn' style='font-size:.8em;'>"); hPrintf(" <FONT class='selCbCount'></font>"); if(tracksFound >= ENOUGH_FOUND_TRACKS) { @@ -734,11 +751,11 @@ int numGroups = 1; groups[0] = ANYLABEL; labels[0] = ANYLABEL; -char *currentTab = cartUsualString(cart, "hgt.currentSearchTab", "simpleTab"); -char *nameSearch = cartOptionalString(cart, "hgt.nameSearch"); +char *currentTab = cartUsualString(cart, TRACK_SEARCH_CURRENT_TAB, "simpleTab"); +char *nameSearch = cartOptionalString(cart, TRACK_SEARCH_ON_NAME); char *descSearch; -char *groupSearch = cartOptionalString(cart, "hgt.groupSearch"); -boolean doSearch = sameString(cartOptionalString(cart, searchTracks), "Search") || cartUsualInt(cart, "hgt.forceSearch", 0) == 1; +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 numMetadataSelects, tracksFound = 0; @@ -759,14 +776,14 @@ if(sameString(currentTab, "simpleTab")) { - descSearch = cartOptionalString(cart, "hgt.simpleSearch"); + descSearch = cartOptionalString(cart, TRACK_SEARCH_SIMPLE); simpleSearch = TRUE; freez(&nameSearch); freez(&groupSearch); } else { - descSearch = cartOptionalString(cart, "hgt.descSearch"); + descSearch = cartOptionalString(cart, TRACK_SEARCH_ON_DESCR); simpleSearch = FALSE; } @@ -799,17 +816,17 @@ webStartWrapperDetailedNoArgs(cart, database, "", buf, FALSE, FALSE, FALSE, FALSE); hPrintf("<div style='max-width:1080px;'>"); -hPrintf("<form action='%s' name='SearchTracks' id='searchTracks' method='get'>\n\n", hgTracksName()); +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='hgt.currentSearchTab' id='currentSearchTab' value='%s'>\n", currentTab); -hPrintf("<input type='hidden' name='hgt.delRow' value=''>\n"); -hPrintf("<input type='hidden' name='hgt.addRow' value=''>\n"); -hPrintf("<input type='hidden' name='hgt.forceSearch' value=''>\n"); +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); hPrintf("<div id='tabs' style='display:none; %s'>\n" "<ul>\n" @@ -819,13 +836,14 @@ "<div id='simpleTab' style='max-width:inherit;'>\n",cgiBrowser()==btIE?"width:1060px;":"max-width:inherit;"); hPrintf("<table style='width:100%%; font-size:.8em;'><tr><td colspan='2'>"); -hPrintf("<input type='text' name='hgt.simpleSearch' id='simpleSearch' value='%s' style='max-width:1000px; width:100%%;' onkeyup='findTracksSearchButtonsEnable(true);'>\n", descSearch == NULL ? "" : descSearch); +hPrintf("<input type='text' name='%s' id='simpleSearch' class='submitOnEnter' value='%s' style='max-width:1000px; width:100%%;' onkeyup='findTracksSearchButtonsEnable(true);'>\n", + TRACK_SEARCH_SIMPLE,descSearch == NULL ? "" : descSearch); if (simpleSearch && descSearch) searchTermsExist = TRUE; hPrintf("</td></tr><td style='max-height:4px;'></td></tr></table>"); //hPrintf("</td></tr></table>"); -hPrintf("<input type='submit' name='%s' id='searchSubmit' value='Search' style='font-size:.7em;'>\n", searchTracks); +hPrintf("<input type='submit' name='%s' id='searchSubmit' value='Search' style='font-size:.7em;'>\n", TRACK_SEARCH); hPrintf("<input type='button' name='clear' value='Clear' class='clear' style='font-size:.7em;' onclick='findTracksClear();'>\n"); hPrintf("<input type='submit' name='submit' value='Cancel' class='cancel' style='font-size:.7em;'>\n"); hPrintf("</div>\n"); @@ -840,7 +858,8 @@ hPrintf("<td nowrap><b style='max-width:100px;'>Track Name:</b></td>"); hPrintf("<td align='right'>contains</td>\n"); hPrintf("<td colspan='%d'>", cols - 4); -hPrintf("<input type='text' name='hgt.nameSearch' id='nameSearch' value='%s' onkeyup='findTracksSearchButtonsEnable(true);' style='min-width:326px;'>", nameSearch == NULL ? "" : nameSearch); +hPrintf("<input type='text' name='%s' id='nameSearch' class='submitOnEnter' value='%s' onkeyup='findTracksSearchButtonsEnable(true);' style='min-width:326px;'>", + TRACK_SEARCH_ON_NAME, nameSearch == NULL ? "" : nameSearch); hPrintf("</td></tr>\n"); // Description contains @@ -848,8 +867,8 @@ hPrintf("<td><b style='max-width:100px;'>Description:</b></td>"); hPrintf("<td align='right'>contains</td>\n"); hPrintf("<td colspan='%d'>", cols - 4); -hPrintf("<input type='text' name='hgt.descSearch' id='descSearch' value='%s' onkeyup='findTracksSearchButtonsEnable(true);' style='max-width:536px; width:536px;'>", - descSearch == NULL ? "" : descSearch); +hPrintf("<input type='text' name='%s' id='descSearch' value='%s' class='submitOnEnter' onkeyup='findTracksSearchButtonsEnable(true);' style='max-width:536px; width:536px;'>", + TRACK_SEARCH_ON_DESCR, descSearch == NULL ? "" : descSearch); hPrintf("</td></tr>\n"); if (!simpleSearch && descSearch) searchTermsExist = TRUE; @@ -858,7 +877,7 @@ hPrintf("<td><b style='max-width:100px;'>Group</b></td>"); hPrintf("<td align='right'>is</td>\n"); hPrintf("<td colspan='%d'>", cols - 4); -cgiMakeDropListFull("hgt.groupSearch", labels, groups, numGroups, groupSearch, "class='groupSearch' style='min-width:40%%;'"); +cgiMakeDropListFull(TRACK_SEARCH_ON_GROUP, labels, groups, numGroups, groupSearch, "class='groupSearch' style='min-width:40%;'"); hPrintf("</td></tr>\n"); if (!simpleSearch && groupSearch) searchTermsExist = TRUE; @@ -870,7 +889,7 @@ numMetadataSelects = 0; hPrintf("</table>\n"); -hPrintf("<input type='submit' name='%s' id='searchSubmit' value='Search' style='font-size:.7em;'>\n", searchTracks); +hPrintf("<input type='submit' name='%s' id='searchSubmit' value='Search' style='font-size:.7em;'>\n", TRACK_SEARCH); hPrintf("<input type='button' name='clear' value='Clear' class='clear' style='font-size:.7em;' onclick='findTracksClear();'>\n"); hPrintf("<input type='submit' name='submit' value='Cancel' class='cancel' style='font-size:.7em;'>\n"); //hPrintf("<a target='_blank' href='../goldenPath/help/trackSearch.html'>help</a>\n"); @@ -913,7 +932,7 @@ tracks = advancedSearchForTracks(conn,groupList,descWords,descWordCount,nameSearch,descSearch,groupSearch,numMetadataNonEmpty,numMetadataSelects,mdbVar,mdbVal); // Sort and Print results - enum sortBy sortBy = cartUsualInt(cart,SORT_BY_VAR,sbRelevance); + enum sortBy sortBy = cartUsualInt(cart,TRACK_SEARCH_SORT,sbRelevance); tracksFound = slCount(tracks); if(tracksFound > 1) findTracksSort(&tracks,simpleSearch,sortBy); @@ -935,3 +954,4 @@ webEndSectionTables(); } +#endif///def TRACK_SEARCH