diff --git a/backend/server/adventures/models.py b/backend/server/adventures/models.py index 9cc642b..82063f8 100644 --- a/backend/server/adventures/models.py +++ b/backend/server/adventures/models.py @@ -8,6 +8,7 @@ from django_resized import ResizedImageField ADVENTURE_TYPES = [ ('visited', 'Visited'), ('planned', 'Planned'), + ('lodging', 'Lodging'), ] diff --git a/backend/server/adventures/views.py b/backend/server/adventures/views.py index e71cd4c..e06940f 100644 --- a/backend/server/adventures/views.py +++ b/backend/server/adventures/views.py @@ -138,8 +138,9 @@ class AdventureViewSet(viewsets.ModelViewSet): # queryset = Adventure.objects.filter( # Q(is_public=True) | Q(user_id=request.user.id), collection=None # ) + allowed_types = ['visited', 'planned'] queryset = Adventure.objects.filter( - Q(user_id=request.user.id) + Q(user_id=request.user.id) & Q(type__in=allowed_types) ) queryset = self.apply_sorting(queryset) diff --git a/frontend/src/lib/components/AdventureCard.svelte b/frontend/src/lib/components/AdventureCard.svelte index be80984..8db65f9 100644 --- a/frontend/src/lib/components/AdventureCard.svelte +++ b/frontend/src/lib/components/AdventureCard.svelte @@ -149,9 +149,12 @@
{#if adventure.type == 'visited' && user?.pk == adventure.user_id}
Visited
- {:else if user?.pk == adventure.user_id} + {:else if user?.pk == adventure.user_id && adventure.type == 'planned'}
Planned
+ {:else if user?.pk == adventure.user_id && adventure.type == 'lodging'} +
Lodging
{/if} +
{adventure.is_public ? 'Public' : 'Private'}
{#if adventure.location && adventure.location !== ''} diff --git a/frontend/src/lib/components/NewAdventure.svelte b/frontend/src/lib/components/NewAdventure.svelte index 9b39421..96ac78f 100644 --- a/frontend/src/lib/components/NewAdventure.svelte +++ b/frontend/src/lib/components/NewAdventure.svelte @@ -11,6 +11,7 @@ export let longitude: number | null = null; export let latitude: number | null = null; + export let collection_id: number | null = null; import MapMarker from '~icons/mdi/map-marker'; import Calendar from '~icons/mdi/calendar'; @@ -39,7 +40,7 @@ latitude: null, longitude: null, is_public: false, - collection: null + collection: collection_id || NaN }; if (longitude && latitude) { @@ -371,6 +372,14 @@ bind:value={newAdventure.longitude} class="input input-bordered w-full max-w-xs mt-1" /> + diff --git a/frontend/src/routes/adventures/+page.server.ts b/frontend/src/routes/adventures/+page.server.ts index 9ee8153..c93f27d 100644 --- a/frontend/src/routes/adventures/+page.server.ts +++ b/frontend/src/routes/adventures/+page.server.ts @@ -64,6 +64,7 @@ export const actions: Actions = { let link = formData.get('link') as string | null; let latitude = formData.get('latitude') as string | null; let longitude = formData.get('longitude') as string | null; + let collection = formData.get('collection') as string | null; // check if latitude and longitude are valid if (latitude && longitude) { @@ -108,6 +109,7 @@ export const actions: Actions = { formDataToSend.append('description', description || ''); formDataToSend.append('latitude', latitude || ''); formDataToSend.append('longitude', longitude || ''); + formDataToSend.append('collection', collection || ''); if (activity_types) { // Filter out empty and duplicate activity types, then trim each activity type const cleanedActivityTypes = Array.from( diff --git a/frontend/src/routes/collections/[id]/+page.svelte b/frontend/src/routes/collections/[id]/+page.svelte index 49ba896..efa4b7d 100644 --- a/frontend/src/routes/collections/[id]/+page.svelte +++ b/frontend/src/routes/collections/[id]/+page.svelte @@ -10,6 +10,7 @@ import AdventureLink from '$lib/components/AdventureLink.svelte'; import EditAdventure from '$lib/components/EditAdventure.svelte'; import NotFound from '$lib/components/NotFound.svelte'; + import NewAdventure from '$lib/components/NewAdventure.svelte'; export let data: PageData; @@ -25,6 +26,7 @@ } let notFound: boolean = false; + let isShowingLinkModal: boolean = false; let isShowingCreateModal: boolean = false; onMount(() => { @@ -72,6 +74,11 @@ return groupedAdventures; } + function createAdventure(event: CustomEvent) { + adventures = [event.detail, ...adventures]; + isShowingCreateModal = false; + } + async function addAdventure(event: CustomEvent) { console.log(event.detail); if (adventures.find((a) => a.id === event.detail.id)) { @@ -111,6 +118,8 @@ let adventureToEdit: Adventure; let isEditModalOpen: boolean = false; + let newType: string; + function editAdventure(event: CustomEvent) { adventureToEdit = event.detail; isEditModalOpen = true; @@ -127,11 +136,11 @@ } -{#if isShowingCreateModal} +{#if isShowingLinkModal} { - isShowingCreateModal = false; + isShowingLinkModal = false; }} on:add={addAdventure} /> @@ -145,6 +154,15 @@ /> {/if} +{#if isShowingCreateModal} + (isShowingCreateModal = false)} + /> +{/if} + {#if notFound}
{ - isShowingCreateModal = true; + isShowingLinkModal = true; }} > Adventure +

Add new...

+ + +