12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- require([
- base_url + '/mkdocs/js/mustache.min.js',
- base_url + '/mkdocs/js/lunr-0.5.7.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);
- });
|