in static/api/python/3.2.x/search.js [247:335]
function launchSearch(noDelay){
let _searchStartTime = performance.now();
// Get the query terms
let _query = input.value;
// In chrome, two events are triggered simultaneously for the input event.
// So we discard consecutive (within the same 0.001s) requests that have the same search query.
if ((
(_searchStartTime-_lastSearchStartTime) < (0.001*1000)
) && (_query === _lastSearchInput) ){
return;
}
updateClearSearchBtn();
// Setup query meta infos.
_lastSearchStartTime = _searchStartTime
_lastSearchInput = _query;
if (_query.length===0){
stopSearching();
return;
}
if (!window.Worker) {
setStatus("Cannot search: JavaScript Worker API is not supported in your browser. ");
return;
}
resetResultList();
showResultContainer();
setStatus("...");
// Determine indexURL
let indexURL = _isSearchInDocstringsEnabled() ? "fullsearchindex.json" : "searchindex.json";
// If search in docstring is enabled:
// -> customize query function to include docstring for clauses applicable for all fields
let _fields = _isSearchInDocstringsEnabled() ? ["name", "names", "qname", "docstring"] : ["name", "names", "qname"];
resetLongSearchTimerInfo();
launchLongSearchTimerInfo();
// Get search delay, wait the all search resources to be cached and actually launch the search
return _getSearchDelayPromise(indexURL).then((searchDelay) => {
if (isSearchReadyPromise==null){
isSearchReadyPromise = _getIsSearchReadyPromise()
}
return isSearchReadyPromise.then((r)=>{
return lunrSearch(_query, indexURL, _fields, "lunr.js", !noDelay?searchDelay:0, SEARCH_AUTO_WILDCARD).then((lunrResults) => {
// outdated query results
if (_searchStartTime != _lastSearchStartTime){return;}
if (!lunrResults){
setErrorStatus();
throw new Error("No data to show");
}
if (lunrResults.length == 0){
setStatus('No results matches "' + htmlEncode(_query) + '"');
resetLongSearchTimerInfo();
return;
}
setStatus("One sec...");
// Get result data
return fetchResultsData(lunrResults, "all-documents.html").then((documentResults) => {
// outdated query results
if (_searchStartTime != _lastSearchStartTime){return;}
// Edit DOM
resetLongSearchTimerInfo();
displaySearchResults(_query, documentResults, lunrResults)
// Log stats
console.log('Search for "' + _query + '" took ' +
((performance.now() - _searchStartTime)/1000).toString() + ' seconds.')
// End
})
}); // lunrResults promise resolved
});
}).catch((err) => {_handleErr(err);});
} // end search() function