From fe25f8e2c8574fed89a009d631b8d5b2d0b9b932 Mon Sep 17 00:00:00 2001 From: Sean Morley Date: Fri, 21 Mar 2025 17:31:33 -0400 Subject: [PATCH] feat: Add start_date to collection ordering and enhance localization for itinerary features --- .../adventures/views/collection_view.py | 8 +++- frontend/src/locales/de.json | 6 ++- frontend/src/locales/es.json | 6 ++- frontend/src/locales/fr.json | 6 ++- frontend/src/locales/it.json | 6 ++- frontend/src/locales/ko.json | 6 ++- frontend/src/locales/nl.json | 6 ++- frontend/src/locales/pl.json | 6 ++- frontend/src/locales/sv.json | 6 ++- frontend/src/locales/zh.json | 6 ++- .../src/routes/collections/+page.server.ts | 4 +- frontend/src/routes/collections/+page.svelte | 39 +++++++++++++------ 12 files changed, 82 insertions(+), 23 deletions(-) diff --git a/backend/server/adventures/views/collection_view.py b/backend/server/adventures/views/collection_view.py index f0529ee..2c46dc5 100644 --- a/backend/server/adventures/views/collection_view.py +++ b/backend/server/adventures/views/collection_view.py @@ -22,7 +22,7 @@ class CollectionViewSet(viewsets.ModelViewSet): order_by = self.request.query_params.get('order_by', 'name') order_direction = self.request.query_params.get('order_direction', 'asc') - valid_order_by = ['name', 'upated_at'] + valid_order_by = ['name', 'upated_at', 'start_date'] if order_by not in valid_order_by: order_by = 'updated_at' @@ -35,6 +35,12 @@ class CollectionViewSet(viewsets.ModelViewSet): ordering = 'lower_name' if order_direction == 'desc': ordering = f'-{ordering}' + elif order_by == 'start_date': + ordering = 'start_date' + if order_direction == 'asc': + ordering = 'start_date' + else: + ordering = '-start_date' else: order_by == 'updated_at' ordering = 'updated_at' diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index c0d939e..13a02ad 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -248,7 +248,11 @@ "reservation_number": "Reservierungsnummer", "welcome_map_info": "Frei zugängliche Abenteuer auf diesem Server", "open_in_maps": "In Karten öffnen", - "all_day": "Den ganzen Tag" + "all_day": "Den ganzen Tag", + "collection_no_start_end_date": "Durch das Hinzufügen eines Start- und Enddatums zur Sammlung werden Reiseroutenplanungsfunktionen auf der Sammlungsseite freigegeben.", + "date_itinerary": "Datumstrecke", + "no_ordered_items": "Fügen Sie der Sammlung Elemente mit Daten hinzu, um sie hier zu sehen.", + "ordered_itinerary": "Reiseroute bestellt" }, "home": { "desc_1": "Entdecken, planen und erkunden Sie mühelos", diff --git a/frontend/src/locales/es.json b/frontend/src/locales/es.json index bd9b6a4..c82df3f 100644 --- a/frontend/src/locales/es.json +++ b/frontend/src/locales/es.json @@ -296,7 +296,11 @@ "reservation_number": "Número de reserva", "welcome_map_info": "Aventuras públicas en este servidor", "open_in_maps": "Abrir en mapas", - "all_day": "Todo el día" + "all_day": "Todo el día", + "collection_no_start_end_date": "Agregar una fecha de inicio y finalización a la colección desbloqueará las funciones de planificación del itinerario en la página de colección.", + "date_itinerary": "Itinerario de fecha", + "no_ordered_items": "Agregue elementos con fechas a la colección para verlos aquí.", + "ordered_itinerary": "Itinerario ordenado" }, "worldtravel": { "all": "Todo", diff --git a/frontend/src/locales/fr.json b/frontend/src/locales/fr.json index 2523fe5..249243d 100644 --- a/frontend/src/locales/fr.json +++ b/frontend/src/locales/fr.json @@ -248,7 +248,11 @@ "reservation_number": "Numéro de réservation", "welcome_map_info": "Aventures publiques sur ce serveur", "open_in_maps": "Ouvert dans les cartes", - "all_day": "Toute la journée" + "all_day": "Toute la journée", + "collection_no_start_end_date": "L'ajout d'une date de début et de fin à la collection débloquera les fonctionnalités de planification de l'itinéraire dans la page de collection.", + "date_itinerary": "Itinéraire de date", + "no_ordered_items": "Ajoutez des articles avec des dates à la collection pour les voir ici.", + "ordered_itinerary": "Itinéraire ordonné" }, "home": { "desc_1": "Découvrez, planifiez et explorez en toute simplicité", diff --git a/frontend/src/locales/it.json b/frontend/src/locales/it.json index 216d121..87c963f 100644 --- a/frontend/src/locales/it.json +++ b/frontend/src/locales/it.json @@ -248,7 +248,11 @@ "welcome_map_info": "Avventure pubbliche su questo server", "reservation_number": "Numero di prenotazione", "open_in_maps": "Aperto in mappe", - "all_day": "Tutto il giorno" + "all_day": "Tutto il giorno", + "collection_no_start_end_date": "L'aggiunta di una data di inizio e fine alla raccolta sbloccherà le funzionalità di pianificazione dell'itinerario nella pagina di raccolta.", + "date_itinerary": "Itinerario della data", + "no_ordered_items": "Aggiungi articoli con date alla collezione per vederli qui.", + "ordered_itinerary": "Itinerario ordinato" }, "home": { "desc_1": "Scopri, pianifica ed esplora con facilità", diff --git a/frontend/src/locales/ko.json b/frontend/src/locales/ko.json index 2099c0c..dda6962 100644 --- a/frontend/src/locales/ko.json +++ b/frontend/src/locales/ko.json @@ -248,7 +248,11 @@ "reservation_number": "예약 번호", "welcome_map_info": "이 서버의 공개 모험", "open_in_maps": "지도에서 열립니다", - "all_day": "하루 종일" + "all_day": "하루 종일", + "collection_no_start_end_date": "컬렉션에 시작 및 종료 날짜를 추가하면 컬렉션 페이지에서 여정 계획 기능이 잠금 해제됩니다.", + "date_itinerary": "날짜 일정", + "no_ordered_items": "컬렉션에 날짜가있는 항목을 추가하여 여기에서 확인하십시오.", + "ordered_itinerary": "주문한 여정" }, "auth": { "both_passwords_required": "두 암호 모두 필요합니다", diff --git a/frontend/src/locales/nl.json b/frontend/src/locales/nl.json index 6dbf2d7..7cb51dc 100644 --- a/frontend/src/locales/nl.json +++ b/frontend/src/locales/nl.json @@ -248,7 +248,11 @@ "price": "Prijs", "region": "Regio", "open_in_maps": "Open in kaarten", - "all_day": "De hele dag" + "all_day": "De hele dag", + "collection_no_start_end_date": "Als u een start- en einddatum aan de collectie toevoegt, ontgrendelt u de functies van de planning van de route ontgrendelen in de verzamelpagina.", + "date_itinerary": "Datumroute", + "no_ordered_items": "Voeg items toe met datums aan de collectie om ze hier te zien.", + "ordered_itinerary": "Besteld reisschema" }, "home": { "desc_1": "Ontdek, plan en verken met gemak", diff --git a/frontend/src/locales/pl.json b/frontend/src/locales/pl.json index 3eb73ac..c4cd914 100644 --- a/frontend/src/locales/pl.json +++ b/frontend/src/locales/pl.json @@ -296,7 +296,11 @@ "reservation_number": "Numer rezerwacji", "welcome_map_info": "Publiczne przygody na tym serwerze", "open_in_maps": "Otwarte w mapach", - "all_day": "Cały dzień" + "all_day": "Cały dzień", + "collection_no_start_end_date": "Dodanie daty rozpoczęcia i końca do kolekcji odblokuje funkcje planowania planu podróży na stronie kolekcji.", + "date_itinerary": "Trasa daty", + "no_ordered_items": "Dodaj przedmioty z datami do kolekcji, aby je zobaczyć tutaj.", + "ordered_itinerary": "Zamówiono trasę" }, "worldtravel": { "country_list": "Lista krajów", diff --git a/frontend/src/locales/sv.json b/frontend/src/locales/sv.json index 0baff34..5efbf63 100644 --- a/frontend/src/locales/sv.json +++ b/frontend/src/locales/sv.json @@ -248,7 +248,11 @@ "region": "Område", "reservation_number": "Bokningsnummer", "open_in_maps": "Kappas in", - "all_day": "Hela dagen" + "all_day": "Hela dagen", + "collection_no_start_end_date": "Att lägga till ett start- och slutdatum till samlingen kommer att låsa upp planeringsfunktioner för resplan på insamlingssidan.", + "date_itinerary": "Datum resplan", + "no_ordered_items": "Lägg till objekt med datum i samlingen för att se dem här.", + "ordered_itinerary": "Beställd resplan" }, "home": { "desc_1": "Upptäck, planera och utforska med lätthet", diff --git a/frontend/src/locales/zh.json b/frontend/src/locales/zh.json index dfd5e8e..84caea8 100644 --- a/frontend/src/locales/zh.json +++ b/frontend/src/locales/zh.json @@ -296,7 +296,11 @@ "price": "价格", "reservation_number": "预订号", "open_in_maps": "在地图上打开", - "all_day": "整天" + "all_day": "整天", + "collection_no_start_end_date": "在集合页面中添加开始日期和结束日期将在“收集”页面中解锁行程计划功能。", + "date_itinerary": "日期行程", + "no_ordered_items": "将带有日期的项目添加到集合中,以便在此处查看它们。", + "ordered_itinerary": "订购了行程" }, "auth": { "forgot_password": "忘记密码?", diff --git a/frontend/src/routes/collections/+page.server.ts b/frontend/src/routes/collections/+page.server.ts index 20e2c40..0c9a24b 100644 --- a/frontend/src/routes/collections/+page.server.ts +++ b/frontend/src/routes/collections/+page.server.ts @@ -208,7 +208,7 @@ export const actions: Actions = { const order_direction = formData.get('order_direction') as string; const order_by = formData.get('order_by') as string; - console.log(order_direction, order_by); + // console.log(order_direction, order_by); let adventures: Adventure[] = []; @@ -242,7 +242,7 @@ export const actions: Actions = { previous = res.previous; count = res.count; adventures = [...adventures, ...visited]; - console.log(next, previous, count); + // console.log(next, previous, count); } return { diff --git a/frontend/src/routes/collections/+page.svelte b/frontend/src/routes/collections/+page.svelte index 171a5d4..6eddc70 100644 --- a/frontend/src/routes/collections/+page.svelte +++ b/frontend/src/routes/collections/+page.svelte @@ -15,8 +15,6 @@ let collections: Collection[] = data.props.adventures || []; - let currentSort = { attribute: 'name', order: 'asc' }; - let newType: string = ''; let resultsPerPage: number = 25; @@ -235,17 +233,36 @@ aria-label={$t(`adventures.descending`)} /> +

{$t('adventures.order_by')}

+
+ + + +

-