| (function() { | |
| function displaySearchResults(results, store) { | |
| const searchResults = document.getElementById('search-results'); | |
| const baseURL = "/codewind"; | |
| if (results.length) { // Are there any results? | |
| let appendString = ''; | |
| for (let i = 0; i < results.length; i++) { // Iterate over the results | |
| let item = store[results[i].ref]; | |
| if (item.layout == "newsredirect") { | |
| appendString += ` | |
| <div class="card"> | |
| <div class="card-header"> | |
| News | |
| </div> | |
| <div class="card-body"> | |
| <h5 class="card-title"><a href="${baseURL}${item.url}">Latest News</a></h5> | |
| <p class="card-text">Want to keep up with the latest in codewind? See the latest news...</p> | |
| </div> | |
| </div>`; | |
| } else { | |
| appendString += ` | |
| <div class="card"> | |
| <div class="card-header"> | |
| ${item.layout[0].toUpperCase() + item.layout.substring(1)} | |
| </div> | |
| <div class="card-body"> | |
| <h5 class="card-title"><a href="${baseURL}${item.url}">${item.title}</a></h5> | |
| <p class="card-text">${item.content.substring(0, 147)}...</p> | |
| </div> | |
| </div>`; | |
| } | |
| } | |
| searchResults.innerHTML = appendString; | |
| } else { | |
| searchResults.innerHTML = '<li class="list-group-item">No results found</li>'; | |
| } | |
| } | |
| function getQueryVariable(variable) { | |
| const query = window.location.search.substring(1); | |
| const vars = query.split('&'); | |
| for (let i = 0; i < vars.length; i++) { | |
| let pair = vars[i].split('='); | |
| if (pair[0] === variable) { | |
| return decodeURIComponent(pair[1].replace(/\+/g, '%20')); | |
| } | |
| } | |
| } | |
| const searchTerm = getQueryVariable('query'); | |
| if (searchTerm) { | |
| document.getElementById('search-box').setAttribute("value", searchTerm); | |
| // Initalize lunr with the fields it will be searching on. I've given title | |
| // a boost of 10 to indicate matches on this field are more important. | |
| const idx = lunr(function () { | |
| this.field('id'); | |
| this.field('title', { boost: 10 }); | |
| this.field('author'); | |
| this.field('category'); | |
| this.field('content'); | |
| }); | |
| for (let key in window.store) { // Add the data to lunr | |
| idx.add({ | |
| 'id': key, | |
| 'title': window.store[key].title, | |
| 'author': window.store[key].author, | |
| 'category': window.store[key].category, | |
| 'content': window.store[key].content | |
| }); | |
| const results = idx.search(searchTerm); // Get lunr to perform a search | |
| displaySearchResults(results, window.store); // We'll write this in the next section | |
| } | |
| } | |
| })(); |