From 7b2ab563cce6ec54f83644f9b79db654b4ac3665 Mon Sep 17 00:00:00 2001
From: arkohut <39525455+arkohut@users.noreply.github.com>
Date: Wed, 21 Aug 2024 01:26:49 +0800
Subject: [PATCH] feat(web): supprt typesense style facet filter
---
web/src/lib/components/FacetFilter.svelte | 26 ++
web/src/routes/+page.svelte | 292 ++++++++++++++++------
2 files changed, 240 insertions(+), 78 deletions(-)
create mode 100644 web/src/lib/components/FacetFilter.svelte
diff --git a/web/src/lib/components/FacetFilter.svelte b/web/src/lib/components/FacetFilter.svelte
new file mode 100644
index 0000000..c308239
--- /dev/null
+++ b/web/src/lib/components/FacetFilter.svelte
@@ -0,0 +1,26 @@
+
+
+
+
{title}
+ {#each facet.counts as item}
+
+ onItemChange(item.value, checked)}
+ />
+
+
+ {/each}
+
diff --git a/web/src/routes/+page.svelte b/web/src/routes/+page.svelte
index 27aa558..a9e7d89 100644
--- a/web/src/routes/+page.svelte
+++ b/web/src/routes/+page.svelte
@@ -1,9 +1,11 @@
-
@@ -137,58 +246,85 @@
bind:value={searchString}
placeholder="Type to search..."
/>
-
-
- {#if isLoading}
-
Loading...
- {:else if searchString}
-
- {#each searchResults as item, index}
-
-
-
openModal(index)}
- >
-
-
-
-
-
{filename(item.filepath)}
-
{''}
-
-
+
+
+
+ {#if searchResult && searchResult.facet_counts}
+ {#each searchResult.facet_counts as facet}
+ {#if facet.field_name === 'tags' || facet.field_name === 'created_date'}
+
+ {/if}
{/each}
-
- {:else}
-
Type something to start searching...
- {/if}
+ {/if}
+
+
+
+
+ {#if isLoading}
+
Loading...
+ {:else if searchResult && searchResult.hits.length > 0}
+
+ ✨ {searchResult['found'].toLocaleString()} results found - Searched {searchResult[
+ 'out_of'
+ ].toLocaleString()} recipes in {searchResult['search_time_ms']}ms.
+
+
+ {#each searchResult.hits as hit, index}
+
+
+
openModal(index)}
+ >
+
+
+
+
+
{filename(hit.document.filepath)}
+
{''}
+
+
+ {/each}
+
+ {:else if searchString}
+
No results found.
+ {:else}
+
Type something to start searching...
+ {/if}
+
-{#if searchResults.length && showModal}
+{#if searchResult && searchResult.hits.length && showModal}
openModal((selectedImage + 1) % searchResults.length)}
- onPrevious={() => openModal((selectedImage - 1 + searchResults.length) % searchResults.length)}
+ onNext={() => searchResult && openModal((selectedImage + 1) % searchResult.hits.length)}
+ onPrevious={() =>
+ searchResult &&
+ openModal((selectedImage - 1 + searchResult.hits.length) % searchResult.hits.length)}
/>
{/if}