From 65fcd94898db02eaffa3a0317f90fe225c8ffb03 Mon Sep 17 00:00:00 2001 From: Sean Morley Date: Sat, 27 Dec 2025 15:26:50 -0500 Subject: [PATCH] feat: add start_code and end_code fields to Transportation model and update related components --- ...tion_end_code_transportation_start_code.py | 23 ++ backend/server/adventures/models.py | 2 + backend/server/adventures/serializers.py | 2 +- .../src/lib/components/CollectionModal.svelte | 335 +++++++++++------- .../components/cards/CollectionCard.svelte | 9 +- .../CollectionItineraryPlanner.svelte | 7 +- .../shared/LocationSearchMap.svelte | 87 ++++- .../TransportationDetails.svelte | 95 ++++- .../transportation/TransportationModal.svelte | 4 + frontend/src/lib/types.ts | 2 + frontend/src/locales/en.json | 10 +- .../routes/transportations/[id]/+page.svelte | 31 +- 12 files changed, 461 insertions(+), 146 deletions(-) create mode 100644 backend/server/adventures/migrations/0065_transportation_end_code_transportation_start_code.py diff --git a/backend/server/adventures/migrations/0065_transportation_end_code_transportation_start_code.py b/backend/server/adventures/migrations/0065_transportation_end_code_transportation_start_code.py new file mode 100644 index 00000000..82c187ad --- /dev/null +++ b/backend/server/adventures/migrations/0065_transportation_end_code_transportation_start_code.py @@ -0,0 +1,23 @@ +# Generated by Django 5.2.6 on 2025-12-27 00:20 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('adventures', '0064_collectionitineraryitem'), + ] + + operations = [ + migrations.AddField( + model_name='transportation', + name='end_code', + field=models.CharField(blank=True, max_length=100, null=True), + ), + migrations.AddField( + model_name='transportation', + name='start_code', + field=models.CharField(blank=True, max_length=100, null=True), + ), + ] diff --git a/backend/server/adventures/models.py b/backend/server/adventures/models.py index faf4fc8a..e1cc530f 100644 --- a/backend/server/adventures/models.py +++ b/backend/server/adventures/models.py @@ -316,6 +316,8 @@ class Transportation(models.Model): origin_longitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True) destination_latitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True) destination_longitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True) + start_code = models.CharField(max_length=100, blank=True, null=True) # Could be airport code, station code, etc. + end_code = models.CharField(max_length=100, blank=True, null=True) # Could be airport code, station code, etc. to_location = models.CharField(max_length=200, blank=True, null=True) is_public = models.BooleanField(default=False) collection = models.ForeignKey('Collection', on_delete=models.CASCADE, blank=True, null=True) diff --git a/backend/server/adventures/serializers.py b/backend/server/adventures/serializers.py index 5cd95ba1..08a76cea 100644 --- a/backend/server/adventures/serializers.py +++ b/backend/server/adventures/serializers.py @@ -432,7 +432,7 @@ class TransportationSerializer(CustomModelSerializer): 'link', 'date', 'flight_number', 'from_location', 'to_location', 'is_public', 'collection', 'created_at', 'updated_at', 'end_date', 'origin_latitude', 'origin_longitude', 'destination_latitude', 'destination_longitude', - 'start_timezone', 'end_timezone', 'distance', 'images', 'attachments' + 'start_timezone', 'end_timezone', 'distance', 'images', 'attachments', 'start_code', 'end_code' ] read_only_fields = ['id', 'created_at', 'updated_at', 'user', 'distance'] diff --git a/frontend/src/lib/components/CollectionModal.svelte b/frontend/src/lib/components/CollectionModal.svelte index 6904ccb0..1f675c8c 100644 --- a/frontend/src/lib/components/CollectionModal.svelte +++ b/frontend/src/lib/components/CollectionModal.svelte @@ -9,6 +9,14 @@ import MarkdownEditor from './MarkdownEditor.svelte'; + // Icons + import CollectionIcon from '~icons/mdi/folder-multiple'; + import InfoIcon from '~icons/mdi/information'; + import CalendarIcon from '~icons/mdi/calendar'; + import LinkIcon from '~icons/mdi/link'; + import SaveIcon from '~icons/mdi/content-save'; + import CloseIcon from '~icons/mdi/close'; + export let collectionToEdit: Collection | null = null; let collection: Collection = { @@ -22,7 +30,9 @@ locations: collectionToEdit?.locations || [], link: collectionToEdit?.link || '', shared_with: undefined, - itinerary: [] + itinerary: [], + status: 'folder', + days_until_start: null }; console.log(collection); @@ -107,141 +117,226 @@ } - + -