adds lists search and filter

This commit is contained in:
Christian Beutel
2024-12-13 18:05:57 +01:00
parent 673eb78dd0
commit c00cf85fed
20 changed files with 417 additions and 104 deletions

View File

@@ -22,10 +22,9 @@
import { Waypoint } from "$lib/models/waypoint";
import { categories } from "$lib/stores/category_store";
import {
lists,
lists_add_trail,
lists_index,
lists_remove_trail,
lists_remove_trail
} from "$lib/stores/list_store";
import { summitLog } from "$lib/stores/summit_log_store";
import { show_toast } from "$lib/stores/toast_store";
@@ -34,6 +33,7 @@
trails_create,
trails_update,
} from "$lib/stores/trail_store";
import { currentUser } from "$lib/stores/user_store.js";
import {
anchors,
appendToRoute,
@@ -53,11 +53,7 @@
} from "$lib/util/format_util";
import {
fromFile,
fromFIT,
fromKML,
fromTCX,
gpx2trail,
isFITFile,
gpx2trail
} from "$lib/util/gpx_util";
import {
@@ -73,7 +69,7 @@
import { scale } from "svelte/transition";
import { array, number, object, string } from "yup";
export let data: { trail: Trail };
export let data;
let map: M.Map;
@@ -455,7 +451,7 @@
} else {
await lists_add_trail(list, $form);
}
await lists_index();
await lists_index({ q: "", author: $currentUser?.id ?? "" }, 1, -1);
} catch (e) {
console.error(e);
show_toast({
@@ -844,13 +840,13 @@
on:click={beforeSummitLogModalOpen}
><i class="fa fa-plus mr-2"></i>{$_("add-entry")}</button
>
{#if $lists.length}
{#if data.lists.items.length}
<hr class="border-separator" />
<h3 class="text-xl font-semibold">
{$_("list", { values: { n: 2 } })}
</h3>
<div class="flex gap-4 flex-wrap">
{#each $lists as list}
{#each data.lists.items as list}
{#if $form.id && list.trails?.includes($form.id)}
<div
class="flex gap-2 items-center border border-input-border rounded-xl p-2"
@@ -920,6 +916,7 @@
<SummitLogModal bind:openModal={openSummitLogModal} on:save={saveSummitLog}
></SummitLogModal>
<ListSelectModal
lists={data.lists.items}
bind:openModal={openListSelectModal}
on:change={(e) => handleListSelection(e.detail)}
></ListSelectModal>

View File

@@ -1,15 +1,16 @@
import { Trail } from "$lib/models/trail";
import { pb } from "$lib/pocketbase";
import { categories_index } from "$lib/stores/category_store";
import { lists_index } from "$lib/stores/list_store";
import { trails_show } from "$lib/stores/trail_store";
import { error, type Load } from "@sveltejs/kit";
export const load: Load = async ({ params, fetch, data }) => {
export const load: Load = async ({ params, fetch }) => {
if (!params.id) {
return error(400, "Bad Request")
}
const categories = await categories_index(fetch)
const lists = await lists_index(undefined, fetch)
const lists = await lists_index({ q: "", author: pb.authStore.model?.id ?? "" }, 1, -1, fetch)
let trail: Trail;
if (params.id === "new") {
@@ -18,5 +19,5 @@ export const load: Load = async ({ params, fetch, data }) => {
trail = await trails_show(params.id, true, fetch);
}
return { trail: trail }
return { trail: trail, lists: lists }
};

View File

@@ -2,9 +2,11 @@
import TrailInfoPanel from "$lib/components/trail/trail_info_panel.svelte";
import { trail } from "$lib/stores/trail_store";
import { _ } from "svelte-i18n";
export let data;
</script>
<TrailInfoPanel trail={$trail} mode="overview"></TrailInfoPanel>
<TrailInfoPanel trail={data.trail} mode="overview"></TrailInfoPanel>
<svelte:head>
<title>{$trail.name} | {$_("trail", { values: { n: 1 } })} | wanderer</title

View File

@@ -1,3 +1,4 @@
import { pb } from "$lib/pocketbase";
import { lists_index } from "$lib/stores/list_store";
import { trails_show } from "$lib/stores/trail_store";
import { error, type Load } from "@sveltejs/kit";
@@ -5,7 +6,9 @@ import { ClientResponseError } from "pocketbase";
export const load: Load = async ({ params, fetch }) => {
try {
await trails_show(params.id!, true, fetch)
const trail = await trails_show(params.id!, true, fetch)
return { trail }
} catch (e) {
if (e instanceof ClientResponseError && e.status == 404) {
error(404, {
@@ -13,7 +16,6 @@ export const load: Load = async ({ params, fetch }) => {
});
}
console.log(e);
}
await lists_index(undefined, fetch);
};