// Methods and jQuery UI for Wax search box function excerptedString(str) {
if (str.length < 40) { return str; } else { return `${str.substring(0, 40)} ...`; }
}
function getThumbnail(item, url) {
if ('thumbnail' in item) { return `<img class='sq-thumb-sm' src='${url}${item.thumbnail}'/> ` } else { return ''; }
}
function displayResult(item, fields, url) {
var pid = item.pid; var label = item.label || 'Untitled'; var link = item.permalink; var thumb = getThumbnail(item, url); var meta = [] for (i in fields) { fieldLabel = fields[i]; if (fieldLabel in item ) { meta.push(`<b>${fieldLabel}:</b> ${excerptedString(item[fieldLabel])}`); } } return `<div class="result"><a href="${url}${link}">${thumb}<p><span class="title">${item.label}</span><br><span class="meta">${meta.join(' | ')}</span></p></a></div>`;
}
function startSearchUI(fields, indexFile, url) {
$.getJSON(indexFile, function(store) { var index = new elasticlunr.Index; index.saveDocument(false); index.setRef('lunr_id'); for (i in fields) { index.addField(fields[i]); } for (i in store) { index.addDoc(store[i]); } $('input#search').on('keyup', function() { var results_div = $('#results'); var query = $(this).val(); var results = index.search(query, { boolean: 'AND', expand: true }); results_div.empty(); results_div.append(`<p class="results-info">Displaying ${results.length} results</p>`); for (var r in results) { var ref = results[r].ref; var item = store[ref]; var result = displayResult(item, fields, url); results_div.append(result); } }); });
}