89 lines
2.5 KiB
JavaScript
89 lines
2.5 KiB
JavaScript
require([
|
|
base_url + '/mkdocs/js/mustache.min.js',
|
|
base_url + '/mkdocs/js/lunr.min.js',
|
|
'text!search-results-template.mustache',
|
|
'text!../search_index.json',
|
|
], function (Mustache, lunr, results_template, data) {
|
|
"use strict";
|
|
|
|
function getSearchTerm()
|
|
{
|
|
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'));
|
|
}
|
|
}
|
|
}
|
|
|
|
var index = lunr(function () {
|
|
this.field('title', {boost: 10});
|
|
this.field('text');
|
|
this.ref('location');
|
|
});
|
|
|
|
data = JSON.parse(data);
|
|
var documents = {};
|
|
|
|
for (var i=0; i < data.docs.length; i++){
|
|
var doc = data.docs[i];
|
|
doc.location = base_url + doc.location;
|
|
index.add(doc);
|
|
documents[doc.location] = doc;
|
|
}
|
|
|
|
var search = function(){
|
|
|
|
var query = document.getElementById('mkdocs-search-query').value;
|
|
var search_results = document.getElementById("mkdocs-search-results");
|
|
while (search_results.firstChild) {
|
|
search_results.removeChild(search_results.firstChild);
|
|
}
|
|
|
|
if(query === ''){
|
|
return;
|
|
}
|
|
|
|
var results = index.search(query);
|
|
|
|
if (results.length > 0){
|
|
for (var i=0; i < results.length; i++){
|
|
var result = results[i];
|
|
doc = documents[result.ref];
|
|
doc.base_url = base_url;
|
|
doc.summary = doc.text.substring(0, 200);
|
|
var html = Mustache.to_html(results_template, doc);
|
|
search_results.insertAdjacentHTML('beforeend', html);
|
|
}
|
|
} else {
|
|
search_results.insertAdjacentHTML('beforeend', "<p>No results found</p>");
|
|
}
|
|
|
|
if(jQuery){
|
|
/*
|
|
* We currently only automatically hide bootstrap models. This
|
|
* requires jQuery to work.
|
|
*/
|
|
jQuery('#mkdocs_search_modal a').click(function(){
|
|
jQuery('#mkdocs_search_modal').modal('hide');
|
|
});
|
|
}
|
|
|
|
};
|
|
|
|
var search_input = document.getElementById('mkdocs-search-query');
|
|
|
|
var term = getSearchTerm();
|
|
if (term){
|
|
search_input.value = term;
|
|
search();
|
|
}
|
|
|
|
search_input.addEventListener("keyup", search);
|
|
|
|
});
|