about summary refs log tree commit diff stats
path: root/frontend
diff options
context:
space:
mode:
authorAlan Pearce2024-05-04 12:54:31 +0200
committerAlan Pearce2024-05-04 14:51:00 +0200
commit5b9e67fd5129dec75169a1a070c70f910dff6da2 (patch)
tree73a4656b60387556462e7d5384cac0919bc1da66 /frontend
parenta2c97c10ee0a01277c51f85b15bdf8ee821f96db (diff)
downloadsearchix-5b9e67fd5129dec75169a1a070c70f910dff6da2.tar.lz
searchix-5b9e67fd5129dec75169a1a070c70f910dff6da2.tar.zst
searchix-5b9e67fd5129dec75169a1a070c70f910dff6da2.zip
feat: frontend search implementation
Diffstat (limited to 'frontend')
-rw-r--r--frontend/static/search.js26
-rw-r--r--frontend/templates/blocks/options.gotmpl13
2 files changed, 39 insertions, 0 deletions
diff --git a/frontend/static/search.js b/frontend/static/search.js
new file mode 100644
index 0000000..20f1a7d
--- /dev/null
+++ b/frontend/static/search.js
@@ -0,0 +1,26 @@
+const search = document.getElementById("search");
+const results = document.getElementById("results");
+search.addEventListener("submit", function (ev) {
+  const url = new URL(this.action);
+  url.search = new URLSearchParams(new FormData(this)).toString();
+  const res = fetch(url, {
+    headers: {
+      fetch: "true",
+    },
+  })
+    .then(function (res) {
+      window.history.pushState(null, null, url);
+      if (res.ok) {
+        return res.text();
+      } else {
+        throw new Error(res.statusText);
+      }
+    })
+    .then(function (html) {
+      results.innerHTML = html;
+    })
+    .catch(function (error) {
+      console.error("fetch failed", error);
+    });
+  ev.preventDefault();
+});
diff --git a/frontend/templates/blocks/options.gotmpl b/frontend/templates/blocks/options.gotmpl
new file mode 100644
index 0000000..3451eb3
--- /dev/null
+++ b/frontend/templates/blocks/options.gotmpl
@@ -0,0 +1,13 @@
+{{ define "results" }}
+  {{ range $opt, $data := .Results }}
+  <details>
+    <summary>
+      {{ $opt }}
+    </summary>
+    <p>
+      {{ $data.Description }}
+    </p>
+  </details>
+  {{ end }}
+</div>
+{{ end }}