{
if (!params.id) {
return error(400, "Bad Request")
}
- const categories = await categories_index()
+ const categories = await categories_index(fetch)
let trail: Trail;
if (params.id === "new") {
diff --git a/web/src/routes/trails/+page.svelte b/web/src/routes/trails/+page.svelte
index 5913ff3b..4f50b5fc 100644
--- a/web/src/routes/trails/+page.svelte
+++ b/web/src/routes/trails/+page.svelte
@@ -4,13 +4,17 @@
import TrailList from "$lib/components/trail/trail_list.svelte";
import type { TrailFilter } from "$lib/models/trail";
import { categories } from "$lib/stores/category_store";
- import { trails, trails_search_filter } from "$lib/stores/trail_store";
+ import {
+ trails,
+ trails_search_filter,
+ } from "$lib/stores/trail_store";
import { onMount } from "svelte";
import { _ } from "svelte-i18n";
let filterExpanded: boolean = true;
const filter: TrailFilter = $page.data.filter;
+ const pagination: {page: number, totalPages: number} = $page.data.pagination
onMount(() => {
if (window.innerWidth < 768) {
@@ -19,7 +23,14 @@
});
async function handleFilterUpdate() {
- await trails_search_filter(filter);
+ const response= await trails_search_filter(filter, 1);
+ pagination.page = response.page
+ pagination.totalPages = response.totalPages;
+ }
+
+ async function paginate(page: number) {
+ pagination.page = page;
+ const response = await trails_search_filter(filter, page);
}
@@ -39,6 +50,8 @@
await trails_search_filter(filter)}
+ pagination={pagination}
+ on:update={() => handleFilterUpdate()}
+ on:pagination={(e) => paginate(e.detail)}
>
diff --git a/web/src/routes/trails/+page.ts b/web/src/routes/trails/+page.ts
index 432b192b..b17d1cb3 100644
--- a/web/src/routes/trails/+page.ts
+++ b/web/src/routes/trails/+page.ts
@@ -21,8 +21,10 @@ export const load: ServerLoad = async ({ params, locals, url, fetch }) => {
if (paramCategory) {
filter.category.push(paramCategory);
}
- await trails_search_filter(filter, fetch);
- await categories_index()
+ const response = await trails_search_filter(filter, 1, fetch);
+ await categories_index(fetch)
- return {filter};
+ return {
+ filter: filter, pagination: { page: response.page, totalPages: response.totalPages }
+ };
};
\ No newline at end of file