function getSearchTermFromLocation() { var sPageURL = window.location.search.substring(1); var sURLVariables = sPageURL.split('&'); for (var i = 0; i < sURLVariables.length; i++) { var sParameterName = sURLVariables[i].split('='); if (sParameterName[0] == 'q') { return decodeURIComponent(sParameterName[1].replace(/\+/g, '%20')); } } } function joinUrl(base, path) { if (path.substring(0, 1) === '/') { // path starts with `/`. Thus it is absolute. return path; } if (base.substring(base.length - 1) === '/') { // base ends with `/` return base + path; } return base + '/' + path; } function formatResult(location, title, summary) { return ( '

' + title + '

' + summary + '

' ); } function displayResults(results) { var search_results = document.getElementById('mkdocs-search-results'); while (search_results.firstChild) { search_results.removeChild(search_results.firstChild); } if (results.length > 0) { for (var i = 0; i < results.length; i++) { var result = results[i]; var html = formatResult(result.location, result.title, result.summary); search_results.insertAdjacentHTML('beforeend', html); } } else { search_results.insertAdjacentHTML('beforeend', '

No results found

'); } } function doSearch() { var query = document.getElementById('mkdocs-search-query').value; if (query.length > min_search_length) { if (!window.Worker) { displayResults(search(query)); } else { searchWorker.postMessage({ query: query }); } } else { // Clear results for short queries displayResults([]); } } function initSearch() { var search_input = document.getElementById('mkdocs-search-query'); if (search_input) { search_input.addEventListener('keyup', doSearch); } var term = getSearchTermFromLocation(); if (term) { search_input.value = term; doSearch(); } } function onWorkerMessage(e) { if (e.data.allowSearch) { initSearch(); } else if (e.data.results) { var results = e.data.results; displayResults(results); } else if (e.data.config) { min_search_length = e.data.config.min_search_length - 1; } } if (!window.Worker) { console.log('Web Worker API not supported'); // load index in main thread $.getScript(joinUrl(base_url, 'search/worker.js')) .done(function () { console.log('Loaded worker'); init(); window.postMessage = function (msg) { onWorkerMessage({ data: msg }); }; }) .fail(function (jqxhr, settings, exception) { console.error('Could not load worker.js'); }); } else { // Wrap search in a web worker var searchWorker = new Worker(joinUrl(base_url, 'search/worker.js')); searchWorker.postMessage({ init: true }); searchWorker.onmessage = onWorkerMessage; }