adds trail filter persistence

This commit is contained in:
Christian Beutel
2025-03-22 15:03:15 +01:00
parent 98691dc311
commit ee14ba87a4
2 changed files with 19 additions and 1 deletions

View File

@@ -25,6 +25,7 @@
} from "$lib/stores/search_store"; } from "$lib/stores/search_store";
import { trails_search_bounding_box } from "$lib/stores/trail_store"; import { trails_search_bounding_box } from "$lib/stores/trail_store";
import { getIconForLocation } from "$lib/util/icon_util"; import { getIconForLocation } from "$lib/util/icon_util";
import type { Snapshot } from "@sveltejs/kit";
import * as M from "maplibre-gl"; import * as M from "maplibre-gl";
import { onMount } from "svelte"; import { onMount } from "svelte";
import { _ } from "svelte-i18n"; import { _ } from "svelte-i18n";
@@ -53,6 +54,14 @@
totalPages: 1, totalPages: 1,
}; };
export const snapshot: Snapshot<TrailFilter> = {
capture: () => filter,
restore: (value) => {
filter = value;
handleFilterUpdate();
},
};
async function search(q: string) { async function search(q: string) {
const r = await searchMulti({ const r = await searchMulti({
queries: [ queries: [
@@ -136,7 +145,7 @@
mapWithElevation?.togglePopup(trail.id!, true); mapWithElevation?.togglePopup(trail.id!, true);
} }
async function handleFilterUpdate(filter: TrailFilter) { async function handleFilterUpdate() {
if (!map) { if (!map) {
return; return;
} }

View File

@@ -5,6 +5,7 @@
import TrailList from "$lib/components/trail/trail_list.svelte"; import TrailList from "$lib/components/trail/trail_list.svelte";
import type { Trail, TrailFilter } from "$lib/models/trail"; import type { Trail, TrailFilter } from "$lib/models/trail";
import { trails_search_filter } from "$lib/stores/trail_store"; import { trails_search_filter } from "$lib/stores/trail_store";
import type { Snapshot } from "@sveltejs/kit";
import { onMount } from "svelte"; import { onMount } from "svelte";
import { _ } from "svelte-i18n"; import { _ } from "svelte-i18n";
@@ -21,6 +22,14 @@
}); });
let trails: Trail[] = $state([]); let trails: Trail[] = $state([]);
export const snapshot: Snapshot<TrailFilter> = {
capture: () => filter,
restore: (value) => {
filter = value;
handleFilterUpdate()
},
};
onMount(() => { onMount(() => {
if (window.innerWidth < 768) { if (window.innerWidth < 768) {
filterExpanded = false; filterExpanded = false;