aboutsummaryrefslogtreecommitdiff
path: root/src/routes/groceries/catalog/+page.svelte
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/groceries/catalog/+page.svelte')
-rw-r--r--src/routes/groceries/catalog/+page.svelte33
1 files changed, 4 insertions, 29 deletions
diff --git a/src/routes/groceries/catalog/+page.svelte b/src/routes/groceries/catalog/+page.svelte
index 4cbcc27..74a82e8 100644
--- a/src/routes/groceries/catalog/+page.svelte
+++ b/src/routes/groceries/catalog/+page.svelte
@@ -1,6 +1,8 @@
<script lang="ts">
import { enhance } from '$app/forms';
import { SvelteSet } from 'svelte/reactivity';
+ import BestRef from '$lib/components/BestRef.svelte';
+ import { groupByCategory } from '$lib/shared/group-by-category';
let { data, form } = $props();
@@ -20,24 +22,6 @@
if (selectedIds.has(id)) selectedIds.delete(id);
else selectedIds.add(id);
}
-
- function groupByCategory(items: typeof catalogItems) {
- const groups: Record<string, typeof catalogItems> = {};
- for (const item of items) {
- const key = item.categoryName ?? 'Non catégorisé';
- (groups[key] ??= []).push(item);
- }
- const result: [string, typeof catalogItems][] = [];
- for (const cat of data.categories) {
- if (groups[cat.name]?.length > 0) {
- result.push([cat.name, groups[cat.name]]);
- }
- }
- if (groups['Non catégorisé']?.length > 0) {
- result.unshift(['Non catégorisé', groups['Non catégorisé']]);
- }
- return result;
- }
</script>
{#if catalogItems.length > 0}
@@ -91,7 +75,7 @@
<p class="empty">Aucun résultat</p>
{:else}
<form method="POST" action="?/toggle" use:enhance>
- {#each groupByCategory(filteredItems) as [cat, items] (cat)}
+ {#each groupByCategory(filteredItems, data.categories) as [cat, items] (cat)}
<h3 class="category-name">{cat}</h3>
<ul class="item-list">
{#each items as item (item.id)}
@@ -112,16 +96,7 @@
<span class="item-text">
<span class:checked={item.checked}>{item.name}</span>
{#if item.bestRef}
- <span class="best-ref"
- >{item.bestRef.reference}
- {#if item.bestRef.price && item.bestRef.unit}
- &nbsp;{item.bestRef.price.toFixed(2)}
- {item.bestRef.unit}
- {/if}
- {#if item.bestRef.qualityScore != null}
- &nbsp;({item.bestRef.qualityScore}/100)
- {/if}
- </span>
+ <BestRef ref={item.bestRef} />
{/if}
</span>
</button>