added search functionality:

This commit is contained in:
Eli Mellen 2019-08-06 20:57:11 -04:00
parent 7b9c47824a
commit ecbd69b6a0
3 changed files with 72 additions and 2 deletions

View File

@ -12,6 +12,7 @@
},
"dependencies": {
"jquery": "^3.4.1",
"lunr": "^2.3.6",
"marked": "^0.7.0",
"navigo": "^7.1.2"
},

View File

@ -1,3 +1,40 @@
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
/* === Custom Styles === */
html {
font-size: 22px;
}

View File

@ -1,6 +1,7 @@
import Navigo from 'navigo';
import $ from 'jquery';
import marked from 'marked';
import lunr from 'lunr';
// Configure markdown parser
@ -47,11 +48,42 @@ $.ajax({
// return all index pages
buildIndex(wikiTitle, indexPages);
})
.on('buscar', () => {
$('#wiki').html(
`<nav><p id="breadCrumbs"><a href="/"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAFoTx1HAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVlpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KTMInWQAAAdlJREFUKBVlUj1vFDEQnbF3D2+sHAUVKPQE7lKA6FEQgQjRALoO5fLHyF2HTkCDEHBBqfgF9xUqmkQJTQoOvLvk1mv2+fAqCEvWep/nPc+8GaKL6+XK7DYNaCABci+ZnJDgFwzEqbtFxua0m7Wu1ZSent6vf/b09JHn7enxg5ii74W1X6inJnOgr9Q3xzj01ThN8taq/xmQk0ZPNmPbGBa0+NnNW00EMcRiG30gWW40zI1Zh9j2kvERO3HFMxFVaf8gdnPl9NpC5luXzPoB8HpBJZQDUIQbZAV5o9c3kQNwL7uUJBMJ+TC2apTKX1vaHB5wX01Tx+VZN2tfB+Ncf71JVowWstgWlcATJAH/kGlR2k8oZ9fc+li55+RvfVjVqIY5m2Ny3KzqvFy/iYBUz+6xLd/t5O2VkOQ/35AlLIeF2MH+cBcIvswA4mlUpWzyuerAGTbOwHAHUoj1RKSy9EcNK1NMKvI7qBobZ2CoBTGIhYDvl7D0VlKUFHx+zIIe75j2KCjDlb4eb7iS3keusWapyEpJT/1sdahjMTRs+XVCuok5QwOgDCsTp69mZOZOuue7pr2PltZDgBeg/lfgTUTxqidW/leEZ0vCMgb4fysMCIYlzHDALgb/AQ4a/m3yQy73AAAAAElFTkSuQmCC" alt="Return to the Index."></a>&nbsp;</p></nav>
<h1>Buscar</h1>
<form id="fakeSearchForm">
<label for="search">Search</label>
<br>
<input id="searchTerm" name="search" type="search">
<br>
<input type="submit" value="Submit">
</form>`
);
$("#fakeSearchForm").on("submit", (event) => {
const searchTerm = $('#searchTerm').val();
router.navigate('buscar/' + searchTerm);
event.preventDefault();
});
})
.on('buscar/:query', (params) => {
console.log(params.query);
let idx = lunr(function () {
this.ref('slug');
this.field('body');
pageData.forEach(function (doc) {
this.add(doc)
}, this)
});
let searchResults = idx.search(params.query);
$('#wiki').html(
`<nav><p id="breadCrumbs"><a href="/"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAFoTx1HAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVlpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KTMInWQAAAdlJREFUKBVlUj1vFDEQnbF3D2+sHAUVKPQE7lKA6FEQgQjRALoO5fLHyF2HTkCDEHBBqfgF9xUqmkQJTQoOvLvk1mv2+fAqCEvWep/nPc+8GaKL6+XK7DYNaCABci+ZnJDgFwzEqbtFxua0m7Wu1ZSent6vf/b09JHn7enxg5ii74W1X6inJnOgr9Q3xzj01ThN8taq/xmQk0ZPNmPbGBa0+NnNW00EMcRiG30gWW40zI1Zh9j2kvERO3HFMxFVaf8gdnPl9NpC5luXzPoB8HpBJZQDUIQbZAV5o9c3kQNwL7uUJBMJ+TC2apTKX1vaHB5wX01Tx+VZN2tfB+Ncf71JVowWstgWlcATJAH/kGlR2k8oZ9fc+li55+RvfVjVqIY5m2Ny3KzqvFy/iYBUz+6xLd/t5O2VkOQ/35AlLIeF2MH+cBcIvswA4mlUpWzyuerAGTbOwHAHUoj1RKSy9EcNK1NMKvI7qBobZ2CoBTGIhYDvl7D0VlKUFHx+zIIe75j2KCjDlb4eb7iS3keusWapyEpJT/1sdahjMTRs+XVCuok5QwOgDCsTp69mZOZOuue7pr2PltZDgBeg/lfgTUTxqidW/leEZ0vCMgb4fysMCIYlzHDALgb/AQ4a/m3yQy73AAAAAElFTkSuQmCC" alt="Return to the Index."></a>&nbsp;</p></nav>
<h1>Search: ${params.query}</h1><ul id="searchResults"></ul>`);
searchResults.forEach((result) => {
$('#searchResults').append(`<li><a href="#${result.ref}">#${result.ref}</a></li>`);
});
})
.on('lista', () => {
console.log('WIP');
})
.on(':slug', (params) => {
// return a specific page by that page's slug