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 { var noResultsText = search_results.getAttribute('data-no-results-text'); if (!noResultsText) { noResultsText = "No results found"; } search_results.insertAdjacentHTML('beforeend', '

' + noResultsText + '

'); } } 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; }