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...
+
+
+