From e92f6ced66fb25a6730264a7515f76099c540679 Mon Sep 17 00:00:00 2001
From: weru <onewesh@gmail.com>
Date: Mon, 05 Oct 2020 20:12:31 +0000
Subject: [PATCH] refactor

---
 assets/js/search.js |   84 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 83 insertions(+), 1 deletions(-)

diff --git a/assets/js/search.js b/assets/js/search.js
index e2608fe..5ddacc1 100644
--- a/assets/js/search.js
+++ b/assets/js/search.js
@@ -9,7 +9,7 @@
     "id": "{{ $index }}",
     "link": "{{ .Permalink }}",
     "title": "{{ .Title }}",
-    "body": "{{ .PlainWords }}",
+    "body": "{{ .PlainWords }}".toLowerCase(),
   });
   {{ end }}
 });
@@ -23,3 +23,85 @@
    },
   {{ end }}
 ];
+
+function searchResults(results=[], order =[],query="") {
+  let resultsFragment = new DocumentFragment();
+  let showResults = elem('.search_results');
+  emptyEl(showResults);
+  let index = 0
+  if(results.length) {
+    let resultsTitle = createEl('h3');
+    resultsTitle.className = 'search_title';
+    resultsTitle.innerText = 'Quick Links';
+    resultsFragment.appendChild(resultsTitle);
+    results.slice(0,6).forEach(function(result){
+      let item = createEl('a');
+      item.href = `${result.link}?query=${query}`;
+      item.className = 'search_result';
+      item.textContent = result.title;
+      item.style.order = order[index];
+      resultsFragment.appendChild(item);
+      index += 1
+    });
+  } else {
+    showResults.innerHTML = "";
+  }
+  showResults.appendChild(resultsFragment);
+}
+
+function search(){
+  const searchField = elem('.search_field');
+
+  if (searchField) {
+    searchField.addEventListener('input', function(event) {
+      const searchTerm = this.value.trim().replaceAll(" ", " +").toLowerCase();
+      if(searchTerm.length >= 3) {
+        let rawResults = idx.search(`+${searchTerm}`);
+
+        console.log(rawResults, searchTerm);
+
+        if(rawResults.length) {
+
+          let refs = rawResults.map(function(ref){
+            // return id and score in a single string
+            return `${ref.ref}:${ref.score}`;
+          });
+
+          let ids = refs.map(function(id){
+            let positionOfSeparator = id.indexOf(":");
+            id = id.substring(0,positionOfSeparator)
+            return Number(id);
+          });
+
+          let scores = refs.map(function(score){
+            let positionOfSeparator = score.indexOf(":");
+            score = score.substring((positionOfSeparator + 1), (score.length - 1));
+            return (parseFloat(score) * 50).toFixed(0);
+          });
+
+          console.log(scores, 'scores is');
+
+          let matchedDocuments = simpleIndex.filter(function(doc){
+            return ids.includes(doc.id);
+          });
+
+          console.log('matches are', matchedDocuments);
+
+          matchedDocuments.length >= 1 ? searchResults(matchedDocuments, scores,searchTerm) : false;
+        } else {
+          searchResults();
+        }
+
+      } else {
+        searchResults();
+      }
+    });
+  }
+}
+
+let alltext = doc.innerHTML;
+console.log(typeof alltext);
+// doc.innerHTML = alltext.replaceAll('is', '<span class="is">is</span>');
+
+
+window.addEventListener('load', () => search());
\ No newline at end of file

--
Gitblit v1.10.0