diff options
author | Steve Manuel <nilslice@gmail.com> | 2017-06-10 17:09:47 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-10 17:09:47 -0600 |
commit | e3fb3aba33645ef1c7ba1d1556c806d7c0eb853b (patch) | |
tree | e65b5a0dc7579b0af904c487570c5c5ade742f7b /docs/build/mkdocs/js/search.js | |
parent | 427dff52c3db481dff38dd1eee83f93e54ea8065 (diff) | |
parent | 4d767c13f15b24fdbfcb610589e757a98c931d70 (diff) |
Merge pull request #159 from ponzu-cms/ponzu-dev
[cli] adding documentation server for local use
Diffstat (limited to 'docs/build/mkdocs/js/search.js')
-rw-r--r-- | docs/build/mkdocs/js/search.js | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/docs/build/mkdocs/js/search.js b/docs/build/mkdocs/js/search.js new file mode 100644 index 0000000..d5c8661 --- /dev/null +++ b/docs/build/mkdocs/js/search.js @@ -0,0 +1,88 @@ +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); + +}); |