github.com/ratrocket/u-root@v0.0.0-20180201221235-1cf9f48ee2cf/docs/mkdocs/js/search.js (about) 1 require([ 2 base_url + '/mkdocs/js/mustache.min.js', 3 base_url + '/mkdocs/js/lunr-0.5.7.min.js', 4 'text!search-results-template.mustache', 5 'text!../search_index.json', 6 ], function (Mustache, lunr, results_template, data) { 7 "use strict"; 8 9 function getSearchTerm() 10 { 11 var sPageURL = window.location.search.substring(1); 12 var sURLVariables = sPageURL.split('&'); 13 for (var i = 0; i < sURLVariables.length; i++) 14 { 15 var sParameterName = sURLVariables[i].split('='); 16 if (sParameterName[0] == 'q') 17 { 18 return decodeURIComponent(sParameterName[1].replace(/\+/g, '%20')); 19 } 20 } 21 } 22 23 var index = lunr(function () { 24 this.field('title', {boost: 10}); 25 this.field('text'); 26 this.ref('location'); 27 }); 28 29 data = JSON.parse(data); 30 var documents = {}; 31 32 for (var i=0; i < data.docs.length; i++){ 33 var doc = data.docs[i]; 34 doc.location = base_url + doc.location; 35 index.add(doc); 36 documents[doc.location] = doc; 37 } 38 39 var search = function(){ 40 41 var query = document.getElementById('mkdocs-search-query').value; 42 var search_results = document.getElementById("mkdocs-search-results"); 43 while (search_results.firstChild) { 44 search_results.removeChild(search_results.firstChild); 45 } 46 47 if(query === ''){ 48 return; 49 } 50 51 var results = index.search(query); 52 53 if (results.length > 0){ 54 for (var i=0; i < results.length; i++){ 55 var result = results[i]; 56 doc = documents[result.ref]; 57 doc.base_url = base_url; 58 doc.summary = doc.text.substring(0, 200); 59 var html = Mustache.to_html(results_template, doc); 60 search_results.insertAdjacentHTML('beforeend', html); 61 } 62 } else { 63 search_results.insertAdjacentHTML('beforeend', "<p>No results found</p>"); 64 } 65 66 if(jQuery){ 67 /* 68 * We currently only automatically hide bootstrap models. This 69 * requires jQuery to work. 70 */ 71 jQuery('#mkdocs_search_modal a').click(function(){ 72 jQuery('#mkdocs_search_modal').modal('hide'); 73 }) 74 } 75 76 }; 77 78 var search_input = document.getElementById('mkdocs-search-query'); 79 80 var term = getSearchTerm(); 81 if (term){ 82 search_input.value = term; 83 search(); 84 } 85 86 search_input.addEventListener("keyup", search); 87 88 });