From f878167a36de7acc31afb6d9859d3fcee62e60c1 Mon Sep 17 00:00:00 2001 From: Sean Morley Date: Tue, 26 Nov 2024 20:06:52 -0500 Subject: [PATCH] Enhance category management: update adventure category assignment logic, improve category display in UI components, and add dynamic sorting for category dropdown --- documentation/.vitepress/config.mts | 1 + .../src/lib/components/AdventureModal.svelte | 24 +- .../lib/components/CategoryDropdown.svelte | 15 +- .../src/lib/components/CategoryModal.svelte | 4 + frontend/src/locales/en.json | 824 +++++++++--------- frontend/src/routes/map/+page.svelte | 2 +- 6 files changed, 441 insertions(+), 429 deletions(-) diff --git a/documentation/.vitepress/config.mts b/documentation/.vitepress/config.mts index 8757709..b79077c 100644 --- a/documentation/.vitepress/config.mts +++ b/documentation/.vitepress/config.mts @@ -122,6 +122,7 @@ export default defineConfig({ }, { text: "Changelogs", + collapsed: false, items: [ { text: "v0.7.1", diff --git a/frontend/src/lib/components/AdventureModal.svelte b/frontend/src/lib/components/AdventureModal.svelte index 0dfc951..c0dc277 100644 --- a/frontend/src/lib/components/AdventureModal.svelte +++ b/frontend/src/lib/components/AdventureModal.svelte @@ -405,16 +405,20 @@ console.log(adventure); if (adventure.id === '') { console.log(categories); - if (categories.some((category) => category.name === 'general')) { - adventure.category = categories.find((category) => category.name === 'general') as Category; - } else { - adventure.category = { - id: '', - name: 'general', - display_name: 'General', - icon: '🌍', - user_id: '' - }; + if (adventure.category?.display_name == '') { + if (categories.some((category) => category.name === 'general')) { + adventure.category = categories.find( + (category) => category.name === 'general' + ) as Category; + } else { + adventure.category = { + id: '', + name: 'general', + display_name: 'General', + icon: '🌍', + user_id: '' + }; + } } let res = await fetch('/api/adventures', { method: 'POST', diff --git a/frontend/src/lib/components/CategoryDropdown.svelte b/frontend/src/lib/components/CategoryDropdown.svelte index 5d86822..8994767 100644 --- a/frontend/src/lib/components/CategoryDropdown.svelte +++ b/frontend/src/lib/components/CategoryDropdown.svelte @@ -77,16 +77,19 @@ >
- - {#each categories as category} - - -
+ {#each categories + .slice() + .sort((a, b) => (b.num_adventures || 0) - (a.num_adventures || 0)) as category} +
+ {/each}
diff --git a/frontend/src/lib/components/CategoryModal.svelte b/frontend/src/lib/components/CategoryModal.svelte index bb60725..687e6c7 100644 --- a/frontend/src/lib/components/CategoryModal.svelte +++ b/frontend/src/lib/components/CategoryModal.svelte @@ -6,6 +6,8 @@ let modal: HTMLDialogElement; import { t } from 'svelte-i18n'; + import InformationSlabCircle from '~icons/mdi/information-slab-circle'; + export let categories: Category[] = []; let category_to_edit: Category | null = null; @@ -86,6 +88,8 @@ + {:else} + {/if} diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index 0b00798..a6d906a 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -1,414 +1,414 @@ { - "navbar": { - "adventures": "Adventures", - "collections": "Collections", - "worldtravel": "World Travel", - "map": "Map", - "users": "Users", - "search": "Search", - "profile": "Profile", - "greeting": "Hi", - "my_adventures": "My Adventures", - "my_tags": "My Tags", - "tag": "Tag", - "shared_with_me": "Shared With Me", - "settings": "Settings", - "logout": "Logout", - "about": "About AdventureLog", - "documentation": "Documentation", - "discord": "Discord", - "language_selection": "Language", - "support": "Support", - "theme_selection": "Theme Selection", - "themes": { - "light": "Light", - "dark": "Dark", - "night": "Night", - "forest": "Forest", - "aestheticLight": "Aesthetic Light", - "aestheticDark": "Aesthetic Dark", - "aqua": "Aqua" - } - }, - "about": { - "about": "About", - "license": "Licensed under the GPL-3.0 License.", - "source_code": "Source Code", - "message": "Made with ❤️ in the United States.", - "oss_attributions": "Open Source Attributions", - "nominatim_1": "Location Search and Geocoding is provided by", - "nominatim_2": "Their data is liscensed under the ODbL license.", - "other_attributions": "Additional attributions can be found in the README file.", - "close": "Close" - }, - "home": { - "hero_1": "Discover the World's Most Thrilling Adventures", - "hero_2": "Discover and plan your next adventure with AdventureLog. Explore breathtaking destinations, create custom itineraries, and stay connected on the go.", - "go_to": "Go To AdventureLog", - "key_features": "Key Features", - "desc_1": "Discover, Plan, and Explore with Ease", - "desc_2": "AdventureLog is designed to simplify your journey, providing you with the tools and resources to plan, pack, and navigate your next unforgettable adventure.", - "feature_1": "Travel Log", - "feature_1_desc": "Keep track of your adventures with a personalized travel log and share your experiences with friends and family.", - "feature_2": "Trip Planning", - "feature_2_desc": "Easily create custom itineraries and get a day-by-day breakdown of your trip.", - "feature_3": "Travel Map", - "feature_3_desc": "View your travels throughout the world with an interactive map and explore new destinations." - }, - "adventures": { - "collection_remove_success": "Adventure removed from collection successfully!", - "collection_remove_error": "Error removing adventure from collection", - "collection_link_success": "Adventure linked to collection successfully!", - "no_image_found": "No image found", - "collection_link_error": "Error linking adventure to collection", - "adventure_delete_confirm": "Are you sure you want to delete this adventure? This action cannot be undone.", - "open_details": "Open Details", - "edit_adventure": "Edit Adventure", - "remove_from_collection": "Remove from Collection", - "add_to_collection": "Add to Collection", - "delete": "Delete", - "not_found": "Adventure not found", - "not_found_desc": "The adventure you were looking for could not be found. Please try a different adventure or check back later.", - "homepage": "Homepage", - "adventure_details": "Adventure Details", - "collection": "Collection", - "adventure_type": "Adventure Type", - "longitude": "Longitude", - "latitude": "Latitude", - "visit": "Visit", - "visits": "Visits", - "create_new": "Create New...", - "adventure": "Adventure", - "count_txt": "results matching your search", - "sort": "Sort", - "order_by": "Order By", - "order_direction": "Order Direction", - "ascending": "Ascending", - "descending": "Descending", - "updated": "Updated", - "name": "Name", - "date": "Date", - "activity_types": "Activity Types", - "tags": "Tags", - "add_a_tag": "Add a tag", - "date_constrain": "Constrain to collection dates", - "rating": "Rating", - "my_images": "My Images", - "add_an_activity": "Add an activity", - "no_images": "No Images", - "upload_images_here": "Upload images here", - "share_adventure": "Share this Adventure!", - "copy_link": "Copy Link", - "image": "Image", - "upload_image": "Upload Image", - "url": "URL", - "fetch_image": "Fetch Image", - "wikipedia": "Wikipedia", - "add_notes": "Add notes", - "warning": "Warning", - "my_adventures": "My Adventures", - "no_linkable_adventures": "No adventures found that can be linked to this collection.", - "add": "Add", - "save_next": "Save & Next", - "end_date": "End Date", - "my_visits": "My Visits", - "start_date": "Start Date", - "remove": "Remove", - "location": "Location", - "search_for_location": "Search for a location", - "clear_map": "Clear map", - "search_results": "Searh results", - "no_results": "No results found", - "wiki_desc": "Pulls excerpt from Wikipedia article matching the name of the adventure.", - "generate_desc": "Generate Description", - "public_adventure": "Public Adventure", - "location_information": "Location Information", - "link": "Link", - "links": "Links", - "description": "Description", - "sources": "Sources", - "collection_adventures": "Include Collection Adventures", - "filter": "Filter", - "category_filter": "Category Filter", - "category": "Category", - "select_adventure_category": "Select Adventure Category", - "clear": "Clear", - "my_collections": "My Collections", - "open_filters": "Open Filters", - "close_filters": "Close Filters", - "archived_collections": "Archived Collections", - "share": "Share", - "private": "Private", - "public": "Public", - "archived": "Archived", - "edit_collection": "Edit Collection", - "unarchive": "Unarchive", - "archive": "Archive", - "no_collections_found": "No collections found to add this adventure to.", - "not_visited": "Not Visited", - "archived_collection_message": "Collection archived successfully!", - "unarchived_collection_message": "Collection unarchived successfully!", - "delete_collection_success": "Collection deleted successfully!", - "delete_collection_warning": "Are you sure you want to delete this collection? This will also delete all of the linked adventures. This action cannot be undone.", - "cancel": "Cancel", - "delete_collection": "Delete Collection", - "delete_adventure": "Delete Adventure", - "adventure_delete_success": "Adventure deleted successfully!", - "visited": "Visited", - "planned": "Planned", - "duration": "Duration", - "all": "All", - "image_removed_success": "Image removed successfully!", - "image_removed_error": "Error removing image", - "no_image_url": "No image found at that URL.", - "image_upload_success": "Image uploaded successfully!", - "image_upload_error": "Error uploading image", - "dates": "Dates", - "wiki_image_error": "Error fetching image from Wikipedia", - "start_before_end_error": "Start date must be before end date", - "activity": "Activity", - "actions": "Actions", - "no_end_date": "Please enter an end date", - "see_adventures": "See Adventures", - "image_fetch_failed": "Failed to fetch image", - "no_location": "Please enter a location", - "no_start_date": "Please enter a start date", - "no_description_found": "No description found", - "adventure_created": "Adventure created", - "adventure_create_error": "Failed to create adventure", - "adventure_updated": "Adventure updated", - "adventure_update_error": "Failed to update adventure", - "set_to_pin": "Set to Pin", - "category_fetch_error": "Error fetching categories", - "new_adventure": "New Adventure", - "basic_information": "Basic Information", - "adventure_not_found": "There are no adventures to display. Add some using the plus button at the bottom right or try changing filters!", - "no_adventures_found": "No adventures found", - "mark_region_as_visited": "Mark region {region}, {country} as visited?", - "mark_visited": "Mark Visited", - "error_updating_regions": "Error updating regions", - "regions_updated": "regions updated", - "visited_region_check": "Visited Region Check", - "visited_region_check_desc": "By selecting this, the server will check all of your visited adventures and mark the regions they are located in as visited in world travel.", - "update_visited_regions": "Update Visited Regions", - "update_visited_regions_disclaimer": "This may take a while depending on the number of adventures you have visited.", - "link_new": "Link New...", - "add_new": "Add New...", - "transportation": "Transportation", - "note": "Note", - "checklist": "Checklist", - "collection_archived": "This collection has been archived.", - "visit_link": "Visit Link", - "collection_completed": "You've completed this collection!", - "collection_stats": "Collection Stats", - "keep_exploring": "Keep Exploring!", - "linked_adventures": "Linked Adventures", - "notes": "Notes", - "checklists": "Checklists", - "transportations": "Transportations", - "day": "Day", - "itineary_by_date": "Itinerary by Date", - "nothing_planned": "Nothing planned for this day. Enjoy the journey!", - "days": "days", - "activities": { - "general": "General 🌍", - "outdoor": "Outdoor 🏞️", - "lodging": "Lodging 🛌", - "dining": "Dining 🍽️", - "activity": "Activity 🏄", - "attraction": "Attraction 🎢", - "shopping": "Shopping 🛍️", - "nightlife": "Nightlife 🌃", - "event": "Event 🎉", - "transportation": "Transportation 🚗", - "culture": "Culture 🎭", - "water_sports": "Water Sports 🚤", - "hiking": "Hiking 🥾", - "wildlife": "Wildlife 🦒", - "historical_sites": "Historical Sites 🏛️", - "music_concerts": "Music & Concerts 🎶", - "fitness": "Fitness 🏋️", - "art_museums": "Art & Museums 🎨", - "festivals": "Festivals 🎪", - "spiritual_journeys": "Spiritual Journeys 🧘‍♀️", - "volunteer_work": "Volunteer Work 🤝", - "other": "Other" - } - }, - "worldtravel": { - "country_list": "Country List", - "num_countries": "countries found", - "all": "All", - "partially_visited": "Partially Visited", - "not_visited": "Not Visited", - "completely_visited": "Completely Visited", - "all_subregions": "All Subregions", - "clear_search": "Clear Search", - "no_countries_found": "No countries found" - }, - "auth": { - "username": "Username", - "password": "Password", - "forgot_password": "Forgot Password?", - "signup": "Signup", - "login_error": "Unable to login with the provided credentials.", - "login": "Login", - "email": "Email", - "first_name": "First Name", - "last_name": "Last Name", - "confirm_password": "Confirm Password", - "registration_disabled": "Registration is currently disabled.", - "profile_picture": "Profile Picture", - "public_profile": "Public Profile", - "public_tooltip": "With a public profile, users can share collections with you and view your profile on the users page." - }, - "users": { - "no_users_found": "No users found with public profiles." - }, - "settings": { - "update_error": "Error updating settings", - "update_success": "Settings updated successfully!", - "settings_page": "Settings Page", - "account_settings": "User Account Settings", - "update": "Update", - "password_change": "Change Password", - "new_password": "New Password", - "confirm_new_password": "Confirm New Password", - "email_change": "Change Email", - "current_email": "Current Email", - "no_email_set": "No email set", - "new_email": "New Email", - "change_password": "Change Password", - "login_redir": "You will then be redirected to the login page.", - "token_required": "Token and UID are required for password reset.", - "reset_password": "Reset Password", - "possible_reset": "If the email address you provided is associated with an account, you will receive an email with instructions to reset your password!", - "missing_email": "Please enter an email address", - "submit": "Submit", - "password_does_not_match": "Passwords do not match", - "password_is_required": "Password is required", - "invalid_token": "Token is invalid or has expired", - "about_this_background": "About this background", - "photo_by": "Photo by", - "join_discord": "Join the Discord", - "join_discord_desc": "to share your own photos. Post them in the #travel-share channel." - }, - "collection": { - "collection_created": "Collection created successfully!", - "error_creating_collection": "Error creating collection", - "new_collection": "New Collection", - "create": "Create", - "collection_edit_success": "Collection edited successfully!", - "error_editing_collection": "Error editing collection", - "edit_collection": "Edit Collection" - }, - "notes": { - "note_deleted": "Note deleted successfully!", - "note_delete_error": "Error deleting note", - "open": "Open", - "failed_to_save": "Failed to save note", - "note_editor": "Note Editor", - "editing_note": "Editing note", - "content": "Content", - "save": "Save", - "note_public": "This note is public because it is in a public collection.", - "add_a_link": "Add a link", - "invalid_url": "Invalid URL" - }, - "checklist": { - "checklist_deleted": "Checklist deleted successfully!", - "checklist_delete_error": "Error deleting checklist", - "failed_to_save": "Failed to save checklist", - "checklist_editor": "Checklist Editor", - "editing_checklist": "Editing checklist", - "item": "Item", - "items": "Items", - "add_item": "Add Item", - "new_item": "New Item", - "save": "Save", - "checklist_public": "This checklist is public because it is in a public collection.", - "item_cannot_be_empty": "Item cannot be empty", - "item_already_exists": "Item already exists" - }, - "transportation": { - "transportation_deleted": "Transportation deleted successfully!", - "transportation_delete_error": "Error deleting transportation", - "provide_start_date": "Please provide a start date", - "transport_type": "Transport Type", - "type": "Type", - "transportation_added": "Transportation added successfully!", - "error_editing_transportation": "Error editing transportation", - "new_transportation": "New Transportation", - "date_time": "Start Date & Time", - "end_date_time": "End Date & Time", - "flight_number": "Flight Number", - "from_location": "From Location", - "to_location": "To Location", - "edit": "Edit", - "modes": { - "car": "Car", - "plane": "Plane", - "train": "Train", - "bus": "Bus", - "boat": "Boat", - "bike": "Bike", - "walking": "Walking", - "other": "Other" - }, - "transportation_edit_success": "Transportation edited successfully!", - "edit_transportation": "Edit Transportation", - "start": "Start", - "date_and_time": "Date & Time" - }, - "search": { - "adventurelog_results": "AdventureLog Results", - "public_adventures": "Public Adventures", - "online_results": "Online Results" - }, - "map": { - "view_details": "View Details", - "adventure_map": "Adventure Map", - "map_options": "Map Options", - "show_visited_regions": "Show Visited Regions", - "add_adventure_at_marker": "Add New Adventure at Marker", - "clear_marker": "Clear Marker", - "add_adventure": "Add New Adventure" - }, - "share": { - "shared": "Shared", - "with": "with", - "unshared": "Unshared", - "share_desc": "Share this collection with other users.", - "shared_with": "Shared With", - "no_users_shared": "No users shared with", - "not_shared_with": "Not Shared With", - "no_shared_found": "No collections found that are shared with you.", - "set_public": "In order to allow users to share with you, you need your profile set to public.", - "go_to_settings": "Go to settings" - }, - "languages": { - "en": "English", - "de": "German", - "es": "Spanish", - "fr": "French", - "it": "Italian", - "nl": "Dutch", - "sv": "Swedish", - "zh": "Chinese" - }, - "profile": { - "member_since": "Member since", - "user_stats": "User Stats", - "visited_countries": "Visited Countries", - "visited_regions": "Visited Regions" - }, - "categories": { - "manage_categories": "Manage Categories", - "no_categories_found": "No categories found.", - "edit_category": "Edit Category", - "icon": "Icon", - "update_after_refresh": "The adventure cards will be updated once you refresh the page.", - "select_category": "Select Category", - "category_name": "Category Name" - } + "navbar": { + "adventures": "Adventures", + "collections": "Collections", + "worldtravel": "World Travel", + "map": "Map", + "users": "Users", + "search": "Search", + "profile": "Profile", + "greeting": "Hi", + "my_adventures": "My Adventures", + "my_tags": "My Tags", + "tag": "Tag", + "shared_with_me": "Shared With Me", + "settings": "Settings", + "logout": "Logout", + "about": "About AdventureLog", + "documentation": "Documentation", + "discord": "Discord", + "language_selection": "Language", + "support": "Support", + "theme_selection": "Theme Selection", + "themes": { + "light": "Light", + "dark": "Dark", + "night": "Night", + "forest": "Forest", + "aestheticLight": "Aesthetic Light", + "aestheticDark": "Aesthetic Dark", + "aqua": "Aqua" + } + }, + "about": { + "about": "About", + "license": "Licensed under the GPL-3.0 License.", + "source_code": "Source Code", + "message": "Made with ❤️ in the United States.", + "oss_attributions": "Open Source Attributions", + "nominatim_1": "Location Search and Geocoding is provided by", + "nominatim_2": "Their data is liscensed under the ODbL license.", + "other_attributions": "Additional attributions can be found in the README file.", + "close": "Close" + }, + "home": { + "hero_1": "Discover the World's Most Thrilling Adventures", + "hero_2": "Discover and plan your next adventure with AdventureLog. Explore breathtaking destinations, create custom itineraries, and stay connected on the go.", + "go_to": "Go To AdventureLog", + "key_features": "Key Features", + "desc_1": "Discover, Plan, and Explore with Ease", + "desc_2": "AdventureLog is designed to simplify your journey, providing you with the tools and resources to plan, pack, and navigate your next unforgettable adventure.", + "feature_1": "Travel Log", + "feature_1_desc": "Keep track of your adventures with a personalized travel log and share your experiences with friends and family.", + "feature_2": "Trip Planning", + "feature_2_desc": "Easily create custom itineraries and get a day-by-day breakdown of your trip.", + "feature_3": "Travel Map", + "feature_3_desc": "View your travels throughout the world with an interactive map and explore new destinations." + }, + "adventures": { + "collection_remove_success": "Adventure removed from collection successfully!", + "collection_remove_error": "Error removing adventure from collection", + "collection_link_success": "Adventure linked to collection successfully!", + "no_image_found": "No image found", + "collection_link_error": "Error linking adventure to collection", + "adventure_delete_confirm": "Are you sure you want to delete this adventure? This action cannot be undone.", + "open_details": "Open Details", + "edit_adventure": "Edit Adventure", + "remove_from_collection": "Remove from Collection", + "add_to_collection": "Add to Collection", + "delete": "Delete", + "not_found": "Adventure not found", + "not_found_desc": "The adventure you were looking for could not be found. Please try a different adventure or check back later.", + "homepage": "Homepage", + "adventure_details": "Adventure Details", + "collection": "Collection", + "adventure_type": "Adventure Type", + "longitude": "Longitude", + "latitude": "Latitude", + "visit": "Visit", + "visits": "Visits", + "create_new": "Create New...", + "adventure": "Adventure", + "count_txt": "results matching your search", + "sort": "Sort", + "order_by": "Order By", + "order_direction": "Order Direction", + "ascending": "Ascending", + "descending": "Descending", + "updated": "Updated", + "name": "Name", + "date": "Date", + "activity_types": "Activity Types", + "tags": "Tags", + "add_a_tag": "Add a tag", + "date_constrain": "Constrain to collection dates", + "rating": "Rating", + "my_images": "My Images", + "add_an_activity": "Add an activity", + "no_images": "No Images", + "upload_images_here": "Upload images here", + "share_adventure": "Share this Adventure!", + "copy_link": "Copy Link", + "image": "Image", + "upload_image": "Upload Image", + "url": "URL", + "fetch_image": "Fetch Image", + "wikipedia": "Wikipedia", + "add_notes": "Add notes", + "warning": "Warning", + "my_adventures": "My Adventures", + "no_linkable_adventures": "No adventures found that can be linked to this collection.", + "add": "Add", + "save_next": "Save & Next", + "end_date": "End Date", + "my_visits": "My Visits", + "start_date": "Start Date", + "remove": "Remove", + "location": "Location", + "search_for_location": "Search for a location", + "clear_map": "Clear map", + "search_results": "Searh results", + "no_results": "No results found", + "wiki_desc": "Pulls excerpt from Wikipedia article matching the name of the adventure.", + "generate_desc": "Generate Description", + "public_adventure": "Public Adventure", + "location_information": "Location Information", + "link": "Link", + "links": "Links", + "description": "Description", + "sources": "Sources", + "collection_adventures": "Include Collection Adventures", + "filter": "Filter", + "category_filter": "Category Filter", + "category": "Category", + "select_adventure_category": "Select Adventure Category", + "clear": "Clear", + "my_collections": "My Collections", + "open_filters": "Open Filters", + "close_filters": "Close Filters", + "archived_collections": "Archived Collections", + "share": "Share", + "private": "Private", + "public": "Public", + "archived": "Archived", + "edit_collection": "Edit Collection", + "unarchive": "Unarchive", + "archive": "Archive", + "no_collections_found": "No collections found to add this adventure to.", + "not_visited": "Not Visited", + "archived_collection_message": "Collection archived successfully!", + "unarchived_collection_message": "Collection unarchived successfully!", + "delete_collection_success": "Collection deleted successfully!", + "delete_collection_warning": "Are you sure you want to delete this collection? This will also delete all of the linked adventures. This action cannot be undone.", + "cancel": "Cancel", + "delete_collection": "Delete Collection", + "delete_adventure": "Delete Adventure", + "adventure_delete_success": "Adventure deleted successfully!", + "visited": "Visited", + "planned": "Planned", + "duration": "Duration", + "all": "All", + "image_removed_success": "Image removed successfully!", + "image_removed_error": "Error removing image", + "no_image_url": "No image found at that URL.", + "image_upload_success": "Image uploaded successfully!", + "image_upload_error": "Error uploading image", + "dates": "Dates", + "wiki_image_error": "Error fetching image from Wikipedia", + "start_before_end_error": "Start date must be before end date", + "activity": "Activity", + "actions": "Actions", + "no_end_date": "Please enter an end date", + "see_adventures": "See Adventures", + "image_fetch_failed": "Failed to fetch image", + "no_location": "Please enter a location", + "no_start_date": "Please enter a start date", + "no_description_found": "No description found", + "adventure_created": "Adventure created", + "adventure_create_error": "Failed to create adventure", + "adventure_updated": "Adventure updated", + "adventure_update_error": "Failed to update adventure", + "set_to_pin": "Set to Pin", + "category_fetch_error": "Error fetching categories", + "new_adventure": "New Adventure", + "basic_information": "Basic Information", + "adventure_not_found": "There are no adventures to display. Add some using the plus button at the bottom right or try changing filters!", + "no_adventures_found": "No adventures found", + "mark_region_as_visited": "Mark region {region}, {country} as visited?", + "mark_visited": "Mark Visited", + "error_updating_regions": "Error updating regions", + "regions_updated": "regions updated", + "visited_region_check": "Visited Region Check", + "visited_region_check_desc": "By selecting this, the server will check all of your visited adventures and mark the regions they are located in as visited in world travel.", + "update_visited_regions": "Update Visited Regions", + "update_visited_regions_disclaimer": "This may take a while depending on the number of adventures you have visited.", + "link_new": "Link New...", + "add_new": "Add New...", + "transportation": "Transportation", + "note": "Note", + "checklist": "Checklist", + "collection_archived": "This collection has been archived.", + "visit_link": "Visit Link", + "collection_completed": "You've completed this collection!", + "collection_stats": "Collection Stats", + "keep_exploring": "Keep Exploring!", + "linked_adventures": "Linked Adventures", + "notes": "Notes", + "checklists": "Checklists", + "transportations": "Transportations", + "day": "Day", + "itineary_by_date": "Itinerary by Date", + "nothing_planned": "Nothing planned for this day. Enjoy the journey!", + "days": "days", + "activities": { + "general": "General 🌍", + "outdoor": "Outdoor 🏞️", + "lodging": "Lodging 🛌", + "dining": "Dining 🍽️", + "activity": "Activity 🏄", + "attraction": "Attraction 🎢", + "shopping": "Shopping 🛍️", + "nightlife": "Nightlife 🌃", + "event": "Event 🎉", + "transportation": "Transportation 🚗", + "culture": "Culture 🎭", + "water_sports": "Water Sports 🚤", + "hiking": "Hiking 🥾", + "wildlife": "Wildlife 🦒", + "historical_sites": "Historical Sites 🏛️", + "music_concerts": "Music & Concerts 🎶", + "fitness": "Fitness 🏋️", + "art_museums": "Art & Museums 🎨", + "festivals": "Festivals 🎪", + "spiritual_journeys": "Spiritual Journeys 🧘‍♀️", + "volunteer_work": "Volunteer Work 🤝", + "other": "Other" + } + }, + "worldtravel": { + "country_list": "Country List", + "num_countries": "countries found", + "all": "All", + "partially_visited": "Partially Visited", + "not_visited": "Not Visited", + "completely_visited": "Completely Visited", + "all_subregions": "All Subregions", + "clear_search": "Clear Search", + "no_countries_found": "No countries found" + }, + "auth": { + "username": "Username", + "password": "Password", + "forgot_password": "Forgot Password?", + "signup": "Signup", + "login_error": "Unable to login with the provided credentials.", + "login": "Login", + "email": "Email", + "first_name": "First Name", + "last_name": "Last Name", + "confirm_password": "Confirm Password", + "registration_disabled": "Registration is currently disabled.", + "profile_picture": "Profile Picture", + "public_profile": "Public Profile", + "public_tooltip": "With a public profile, users can share collections with you and view your profile on the users page." + }, + "users": { + "no_users_found": "No users found with public profiles." + }, + "settings": { + "update_error": "Error updating settings", + "update_success": "Settings updated successfully!", + "settings_page": "Settings Page", + "account_settings": "User Account Settings", + "update": "Update", + "password_change": "Change Password", + "new_password": "New Password", + "confirm_new_password": "Confirm New Password", + "email_change": "Change Email", + "current_email": "Current Email", + "no_email_set": "No email set", + "new_email": "New Email", + "change_password": "Change Password", + "login_redir": "You will then be redirected to the login page.", + "token_required": "Token and UID are required for password reset.", + "reset_password": "Reset Password", + "possible_reset": "If the email address you provided is associated with an account, you will receive an email with instructions to reset your password!", + "missing_email": "Please enter an email address", + "submit": "Submit", + "password_does_not_match": "Passwords do not match", + "password_is_required": "Password is required", + "invalid_token": "Token is invalid or has expired", + "about_this_background": "About this background", + "photo_by": "Photo by", + "join_discord": "Join the Discord", + "join_discord_desc": "to share your own photos. Post them in the #travel-share channel." + }, + "collection": { + "collection_created": "Collection created successfully!", + "error_creating_collection": "Error creating collection", + "new_collection": "New Collection", + "create": "Create", + "collection_edit_success": "Collection edited successfully!", + "error_editing_collection": "Error editing collection", + "edit_collection": "Edit Collection" + }, + "notes": { + "note_deleted": "Note deleted successfully!", + "note_delete_error": "Error deleting note", + "open": "Open", + "failed_to_save": "Failed to save note", + "note_editor": "Note Editor", + "editing_note": "Editing note", + "content": "Content", + "save": "Save", + "note_public": "This note is public because it is in a public collection.", + "add_a_link": "Add a link", + "invalid_url": "Invalid URL" + }, + "checklist": { + "checklist_deleted": "Checklist deleted successfully!", + "checklist_delete_error": "Error deleting checklist", + "failed_to_save": "Failed to save checklist", + "checklist_editor": "Checklist Editor", + "editing_checklist": "Editing checklist", + "item": "Item", + "items": "Items", + "add_item": "Add Item", + "new_item": "New Item", + "save": "Save", + "checklist_public": "This checklist is public because it is in a public collection.", + "item_cannot_be_empty": "Item cannot be empty", + "item_already_exists": "Item already exists" + }, + "transportation": { + "transportation_deleted": "Transportation deleted successfully!", + "transportation_delete_error": "Error deleting transportation", + "provide_start_date": "Please provide a start date", + "transport_type": "Transport Type", + "type": "Type", + "transportation_added": "Transportation added successfully!", + "error_editing_transportation": "Error editing transportation", + "new_transportation": "New Transportation", + "date_time": "Start Date & Time", + "end_date_time": "End Date & Time", + "flight_number": "Flight Number", + "from_location": "From Location", + "to_location": "To Location", + "edit": "Edit", + "modes": { + "car": "Car", + "plane": "Plane", + "train": "Train", + "bus": "Bus", + "boat": "Boat", + "bike": "Bike", + "walking": "Walking", + "other": "Other" + }, + "transportation_edit_success": "Transportation edited successfully!", + "edit_transportation": "Edit Transportation", + "start": "Start", + "date_and_time": "Date & Time" + }, + "search": { + "adventurelog_results": "AdventureLog Results", + "public_adventures": "Public Adventures", + "online_results": "Online Results" + }, + "map": { + "view_details": "View Details", + "adventure_map": "Adventure Map", + "map_options": "Map Options", + "show_visited_regions": "Show Visited Regions", + "add_adventure_at_marker": "Add New Adventure at Marker", + "clear_marker": "Clear Marker", + "add_adventure": "Add New Adventure" + }, + "share": { + "shared": "Shared", + "with": "with", + "unshared": "Unshared", + "share_desc": "Share this collection with other users.", + "shared_with": "Shared With", + "no_users_shared": "No users shared with", + "not_shared_with": "Not Shared With", + "no_shared_found": "No collections found that are shared with you.", + "set_public": "In order to allow users to share with you, you need your profile set to public.", + "go_to_settings": "Go to settings" + }, + "languages": { + "en": "English", + "de": "German", + "es": "Spanish", + "fr": "French", + "it": "Italian", + "nl": "Dutch", + "sv": "Swedish", + "zh": "Chinese" + }, + "profile": { + "member_since": "Member since", + "user_stats": "User Stats", + "visited_countries": "Visited Countries", + "visited_regions": "Visited Regions" + }, + "categories": { + "manage_categories": "Manage Categories", + "no_categories_found": "No categories found.", + "edit_category": "Edit Category", + "icon": "Icon", + "update_after_refresh": "The adventure cards will be updated once you refresh the page.", + "select_category": "Select Category", + "category_name": "Category Name" + } } diff --git a/frontend/src/routes/map/+page.svelte b/frontend/src/routes/map/+page.svelte index 773860e..705ce1c 100644 --- a/frontend/src/routes/map/+page.svelte +++ b/frontend/src/routes/map/+page.svelte @@ -126,7 +126,7 @@ on:click={togglePopup} > - {adventure.category?.display_name + ' ' + adventure.category?.icon} + {adventure.category?.icon} {#if isPopupOpen} (isPopupOpen = false)}>