From 1386679c49e0aaed9099b2f5315442635af42264 Mon Sep 17 00:00:00 2001 From: Alvie Rahman Date: Sat, 21 Aug 2021 10:11:56 +0100 Subject: [PATCH] Clean up code, limit search results to 15 --- search.js | 74 +++++++++++++++++++++++++------------------------------ 1 file changed, 34 insertions(+), 40 deletions(-) diff --git a/search.js b/search.js index 21623d2..c5dbdb5 100644 --- a/search.js +++ b/search.js @@ -1,5 +1,10 @@ +const HEADERS = "headers" +const PATH = "path" +const TAGS = "tags" +const TITLE = "title" + const fuse = new Fuse(data, { - keys: ['path', 'title', 'tags', 'headers'], + keys: [ HEADERS, PATH, TAGS, TITLE ], includeMatches: true }) @@ -7,63 +12,52 @@ const searchBar = document.getElementById('search') const results = document.getElementById('results') function callback() { - console.log("called") - console.log(searchBar.value) results.innerHTML = '' - fuse.search(searchBar.value).forEach(r => { - console.log(r) + fuse.search(searchBar.value).slice(0,15).forEach(r => { wrapper = document.createElement('div') wrapper.className = "article" - extra_info = document.createElement('p') - extra_info.className = "smallText" - extra_info.innerHTML = "tags: " - if (r.item.tags == null) { - extra_info.innerHTML += "none" - } else { - extra_info.innerHTML += "[" + r.item.tags.join(', ') + ']' - } - extra_info.innerHTML += ' path: ' + r.item.path - - header_matches_p = document.createElement('p') - header_matches_p.className = "smallText" - header_matches = [] + display_matches = {} + display_matches[HEADERS] = [] + display_matches[PATH] = [] + display_matches[TAGS] = [] + display_matches[TITLE] = [] r.matches.every(match => { - if (header_matches.length > 3) { - header_matches.push('...') + if (display_matches[match.key].length > 3) { + display_matches[match.key].push('...') return false } - if (match.key === "headers") { - display_match = match.value - if (match.indices.length >= 1) { - match.indices.sort((a, b) => (b[1]-b[0])-(a[1]-a[0])) - indexPair = match.indices[0] - matching_slice = match.value.slice(indexPair[0], indexPair[1]+1) - console.log(matching_slice) - console.log(display_match) - display_match = display_match.replace( - matching_slice, - '' + matching_slice + '' - ) - } - header_matches.push(display_match) + display_match = match.value + if (match.indices.length >= 1) { + match.indices.sort((a, b) => (b[1]-b[0])-(a[1]-a[0])) + indexPair = match.indices[0] + matching_slice = match.value.slice(indexPair[0], indexPair[1]+1) + display_match = match.value.replace( + matching_slice, + '' + matching_slice + '' + ) } + display_matches[match.key].push(display_match) + return true }) - header_matches_p.innerHTML += "header_matches: [" + header_matches.join(', ') + ']' - content = document.createElement('a') content.innerHTML = r.item.title content.href = r.item.path wrapper.appendChild(content) - wrapper.appendChild(extra_info) - if (header_matches.length > 0) { - wrapper.appendChild(header_matches_p) - } + + Object.keys(display_matches).forEach(key => { + if (display_matches[key].length < 1) return + + p = document.createElement('p') + p.className = "smallText" + p.innerHTML += key + ": [" + display_matches[key].join(', ') + ']' + wrapper.appendChild(p) + }) results.appendChild(wrapper) })