-
Region Stats
+
Collection Stats
{numVisited}/{adventures.length} Visited
{#if numVisited === adventures.length}
You've completed this collection! 🎉!
@@ -169,6 +187,9 @@
{/if}
Linked Adventures
+ {#if adventures.length == 0}
+
+ {/if}
{#each adventures as adventure}
{/each}
diff --git a/frontend/src/routes/map/+page.server.ts b/frontend/src/routes/map/+page.server.ts
index 2465952..48a1625 100644
--- a/frontend/src/routes/map/+page.server.ts
+++ b/frontend/src/routes/map/+page.server.ts
@@ -25,7 +25,8 @@ export const load = (async (event) => {
.map((adventure) => {
return {
lngLat: [adventure.longitude, adventure.latitude] as [number, number],
- name: adventure.name
+ name: adventure.name,
+ type: adventure.type
};
});
return {
diff --git a/frontend/src/routes/map/+page.svelte b/frontend/src/routes/map/+page.svelte
index 73dda48..7052fb8 100644
--- a/frontend/src/routes/map/+page.svelte
+++ b/frontend/src/routes/map/+page.svelte
@@ -1,9 +1,11 @@
@@ -13,14 +15,50 @@
class="relative aspect-[9/16] max-h-[70vh] w-full sm:aspect-video sm:max-h-full"
standardControls
>
- {#each data.props.markers as { lngLat, name }}
-
-
-
- {name}
-
-
+ {#each data.props.markers as { lngLat, name, type }}
+ {#if type == 'visited'}
+
(clickedName = name)}
+ class="grid h-8 w-8 place-items-center rounded-full border border-gray-200 bg-red-300 text-black shadow-2xl focus:outline-2 focus:outline-black"
+ >
+
+
+ {name}
+ Visited
+
+
+ {/if}
+
+ {#if type == 'planned'}
+
(clickedName = name)}
+ class="grid h-8 w-8 place-items-center rounded-full border border-gray-200 bg-blue-300 text-black shadow-2xl focus:outline-2 focus:outline-black"
+ >
+
+
+ {name}
+ Planned
+
+
+ {/if}
{/each}
diff --git a/frontend/src/routes/search/+page.server.ts b/frontend/src/routes/search/+page.server.ts
index 5c2ec87..0d270da 100644
--- a/frontend/src/routes/search/+page.server.ts
+++ b/frontend/src/routes/search/+page.server.ts
@@ -25,10 +25,7 @@ export const load = (async (event) => {
return {
props: {
- adventures: data.results as Adventure[],
- nextPage: data.next,
- prevPage: data.previous,
- total: data.count,
+ adventures: data,
query
}
};
diff --git a/frontend/src/routes/search/+page.svelte b/frontend/src/routes/search/+page.svelte
index ddb36ce..b6f2b33 100644
--- a/frontend/src/routes/search/+page.svelte
+++ b/frontend/src/routes/search/+page.svelte
@@ -4,7 +4,7 @@
import type { Adventure, OpenStreetMapPlace } from '$lib/types';
import { onMount } from 'svelte';
import type { PageData } from './$types';
- import { page } from '$app/stores';
+ import EditAdventure from '$lib/components/EditAdventure.svelte';
export let data: PageData;
@@ -13,6 +13,7 @@
}
let osmResults: OpenStreetMapPlace[] = [];
+ let adventures: Adventure[] = [];
let query: string | null = '';
@@ -36,15 +37,44 @@
});
console.log(data);
- let adventures: Adventure[] = [];
+
if (data.props) {
adventures = data.props.adventures;
}
+
+ let adventureToEdit: Adventure;
+ let isEditModalOpen: boolean = false;
+ let isShowingCreateModal: boolean = false;
+
+ function editAdventure(event: CustomEvent
) {
+ adventureToEdit = event.detail;
+ isEditModalOpen = true;
+ }
+
+ function saveEdit(event: CustomEvent) {
+ adventures = adventures.map((adventure) => {
+ if (adventure.id === event.detail.id) {
+ return event.detail;
+ }
+ return adventure;
+ });
+ isEditModalOpen = false;
+ }
+{#if isEditModalOpen}
+ (isEditModalOpen = false)}
+ on:saveEdit={saveEdit}
+ />
+{/if}
+
{#if adventures.length === 0 && osmResults.length === 0}
-{:else}
+{/if}
+
+{#if adventures.length > 0}
AdventureLog Results
{#each adventures as adventure}
@@ -53,10 +83,15 @@
type={adventure.type}
{adventure}
on:delete={deleteAdventure}
+ on:edit={editAdventure}
/>
{/each}
+{/if}
+{#if adventures.length > 0 && osmResults.length > 0}
+{/if}
+{#if osmResults.length > 0}
Online Results
{#each osmResults as result}