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)
})