Bug Fixes + Speed Improvements (#871)
* Show timezone information on visits list (#865)
* Initial plan
* Initial investigation: Show timezone on visits list - planning implementation
Co-authored-by: seanmorley15 <98704938+seanmorley15@users.noreply.github.com>
* Show timezone on visits list - add timezone badge display
Co-authored-by: seanmorley15 <98704938+seanmorley15@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: seanmorley15 <98704938+seanmorley15@users.noreply.github.com>
* fix: add additional timezones (#852)
* [BUG] Transportation node does not accept complex links in link parameter
Fixes #856
* Squashed commit of the following:
commit 59d5128cc642d133b0c166fbaf2d41a88c237d92
Merge: 0f9d31f4 7b8961e0
Author: Hosted Weblate <hosted@weblate.org>
Date: Fri Sep 19 04:22:36 2025 +0200
Merge branch 'origin/development' into Weblate.
commit 7b8961e02430b9b6fab7b22a7a8c1f7b06ff950b
Author: Orhun <orhunavcu@gmail.com>
Date: Fri Sep 19 00:30:25 2025 +0200
Translated using Weblate (Turkish)
Currently translated at 16.7% (160 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/tr/
commit a8134bdbda318d00175c984785d150e38a1e24bf
Author: Orhun <orhunavcu@gmail.com>
Date: Thu Sep 18 22:52:56 2025 +0200
Added translation using Weblate (Turkish)
commit ac8a8ee8c9fc55da2d4ded1c4beac04a1ea66bb8
Merge: 2527e345 3fca3872
Author: Hosted Weblate <hosted@weblate.org>
Date: Thu Sep 18 14:11:58 2025 +0200
Merge branch 'origin/development' into Weblate.
commit 3fca387272d52dfcb634751a74e4a4b4fcf7ac6b
Merge: 4907ba87 85d8b45c
Author: Hosted Weblate <hosted@weblate.org>
Date: Thu Sep 18 05:13:16 2025 +0200
Merge branch 'origin/development' into Weblate.
commit 85d8b45c4eff77bcc9d5708f7fd8a4fcea91890b
Merge: 9f5cc9cc ae07c440
Author: Sean Morley <mail@seanmorley.com>
Date: Wed Sep 17 19:25:35 2025 -0400
Merge branch 'development' of github.com:seanmorley15/AdventureLog into development
commit 9f5cc9ccb8809cd5ae0c01e979dae271e9197987
Author: Sean Morley <mail@seanmorley.com>
Date: Wed Sep 17 19:23:47 2025 -0400
Remove duplicate comment for syncing development branch with main in .env.example
commit 77c1f516266b2db5e1c97c5cbc8a3fb9e08d40cd
Author: Sean Morley <mail@seanmorley.com>
Date: Wed Sep 17 19:22:36 2025 -0400
Squashed commit of the following:
commit 9d4f1b8f534a3cdfb22812f2a25ababd7a236a87
Author: Jacob <jacob.aulin@proton.me>
Date: Sat Sep 13 15:17:22 2025 +0200
Translated using Weblate (Swedish)
Currently translated at 99.8% (957 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sv/
commit 8fac40cfde425c989521c891b3ba9c75ab32e57e
Author: Christian S <schuld.christian@gmail.com>
Date: Sat Sep 13 12:54:52 2025 +0200
Translated using Weblate (German)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/
commit 8e8c42396ec77b763983155e8b1e89cabf38ce17
Author: Patricio Carrau <duckycb@proton.me>
Date: Tue Sep 9 21:59:48 2025 +0200
Translated using Weblate (Spanish)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/
commit be818ab408d00c5c26dfb3b25632604a415d3570
Author: pplulee <hi@pplulee.me>
Date: Mon Sep 8 04:06:54 2025 +0100
fix(i18n): update Chinese translations for location-related terms (#829)
Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com>
commit 9e40dcf6a1dc194d4694a114b3c7e88135121016
Merge: af2f2809 733eefce
Author: Sean Morley <mail@seanmorley.com>
Date: Sun Sep 7 23:03:57 2025 -0400
Merge remote-tracking branch 'weblate/development' into development
commit af2f28090b9242fb7ab263fa5bbb95a5bcc1b27f
Author: Sean Morley <mail@seanmorley.com>
Date: Sun Sep 7 23:00:33 2025 -0400
[BUG] Location Visit End Date not affected by Location Timezone
Fixes #843
commit 733eefceddbdad01726364e5d4523605f095fde2
Author: Alex <div@alexe.at>
Date: Sun Sep 7 23:28:20 2025 +0200
Translated using Weblate (German)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/
commit 6c750d1c8f95b42418893e15ad46c3d4ed86d053
Author: fantastron27 <fantastron27@gmail.com>
Date: Sun Sep 7 09:17:16 2025 +0200
Translated using Weblate (Slovak)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sk/
commit f733b3b96bbddc71d426f2e60320a5ad2f6755af
Merge: 769ea6ad af4e541c
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 21:36:35 2025 -0400
Merge branch 'development' of github.com:seanmorley15/AdventureLog into development
commit 769ea6ad710890e931aabace2c00dc37436f869f
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 21:36:33 2025 -0400
Implement code changes to enhance functionality and improve performance
commit af4e541c1c9e7309857102287199279aec339387
Author: fantastron27 <fantastron27@gmail.com>
Date: Sun Sep 7 03:36:23 2025 +0200
Added Slovak translations (#815)
* Created sk.json
* Update Navbar.svelte
* Update +layout.svelte
---------
Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com>
commit 904474d757577229b47441d1378a6fd6788fbe40
Merge: d4709434 f87a5fe3
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 21:31:58 2025 -0400
Merge remote-tracking branch 'weblate/development' into development
commit d47094346c0b63ea753294a0786414e5e070ae7f
Merge: 4a5f59bf 6366a3eb
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 21:29:39 2025 -0400
Merge remote-tracking branch 'weblate/development' into development
commit f87a5fe3bcc2fe28cfc206fb5cba517bbffa8df6
Author: Sergio <garcia.sergio@me.com>
Date: Sun Sep 7 01:12:50 2025 +0200
Translated using Weblate (Spanish)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/
commit 4a5f59bfd24e32fdf3558b009a8f636636cb3663
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 21:06:17 2025 -0400
Fixes #654
commit c1302bb54ab272c2a98c53ce0d508b7d39e9674b
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 20:52:05 2025 -0400
[BUG] Single day Collections will think location visits are out of date range
Fixes #827
commit 773f2d65bbfb2a9591b31fabfd6844612b840f1a
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 19:52:28 2025 -0400
[BUG] Server Error (500) when trying to access the API docs
Fixes #712
commit 4228db249ed5e3261931a1cdb3895d0ddd3ac4ac
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 19:44:00 2025 -0400
[BUG]Ordered Itinerary includes visits that are outside itinerary date range
Fixes #746
commit 26f36cabb0a860f10d7ba62b5279ddd1e282c78e
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 18:36:50 2025 +0200
Translated using Weblate (Spanish)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/
commit 3bfd2dd5615afdbd04e3451c2ef728f1d7caf466
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 12:33:23 2025 -0400
Remove empty English (United States) locale file
commit 6366a3eba6ab72090e52be474212a663799dfe19
Author: Nikolai Eidsheim <nikolai.eidsheim@gmail.com>
Date: Sat Sep 6 18:10:15 2025 +0200
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/nb_NO/
commit 671cd3701fc5a601f2f1bad9aef93106f91eec0b
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 16:58:04 2025 +0200
Added translation using Weblate (English (United States))
commit bdbbe5f4978f041f620f0503da69fa870cb1997c
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 16:54:43 2025 +0200
Translated using Weblate (Spanish)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/
commit f310771702291be93e1c6b3bdb5a76e02fb8cae8
Author: Sean Morley <98704938+seanmorley15@users.noreply.github.com>
Date: Mon Sep 8 22:38:08 2025 -0400
Update issue templates for bug reports, deployment issues, and feature requests (#849)
commit 02ed89fa46fa22f8c5d96b0e7f0948204dec9306
Author: Sean Morley <98704938+seanmorley15@users.noreply.github.com>
Date: Sun Sep 7 23:16:12 2025 -0400
Timezone fixes, Translations, and Misc Fixes (#844)
* Translated using Weblate (Spanish)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/
* Added translation using Weblate (English (United States))
* Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/nb_NO/
* Remove empty English (United States) locale file
* Translated using Weblate (Spanish)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/
* [BUG]Ordered Itinerary includes visits that are outside itinerary date range
Fixes #746
* [BUG] Server Error (500) when trying to access the API docs
Fixes #712
* [BUG] Single day Collections will think location visits are out of date range
Fixes #827
* Fixes #654
* Translated using Weblate (Spanish)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/
* Added Slovak translations (#815)
* Created sk.json
* Update Navbar.svelte
* Update +layout.svelte
---------
Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com>
* Implement code changes to enhance functionality and improve performance
* Translated using Weblate (Slovak)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sk/
* Translated using Weblate (German)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/
* [BUG] Location Visit End Date not affected by Location Timezone
Fixes #843
* fix(i18n): update Chinese translations for location-related terms (#829)
Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com>
---------
Co-authored-by: Nikolai Eidsheim <nikolai.eidsheim@gmail.com>
Co-authored-by: Sergio <garcia.sergio@me.com>
Co-authored-by: fantastron27 <fantastron27@gmail.com>
Co-authored-by: Alex <div@alexe.at>
Co-authored-by: pplulee <hi@pplulee.me>
commit ae07c44030ff597be80988b63460595e8bea132f
Author: Sean Morley <mail@seanmorley.com>
Date: Wed Sep 17 19:23:47 2025 -0400
Remove duplicate comment for syncing development branch with main in .env.example
commit 94964f1fb16583f1ff63ddf4aee2469a532b0c6c
Author: Sean Morley <mail@seanmorley.com>
Date: Wed Sep 17 19:22:36 2025 -0400
Squashed commit of the following:
commit 9d4f1b8f534a3cdfb22812f2a25ababd7a236a87
Author: Jacob <jacob.aulin@proton.me>
Date: Sat Sep 13 15:17:22 2025 +0200
Translated using Weblate (Swedish)
Currently translated at 99.8% (957 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sv/
commit 8fac40cfde425c989521c891b3ba9c75ab32e57e
Author: Christian S <schuld.christian@gmail.com>
Date: Sat Sep 13 12:54:52 2025 +0200
Translated using Weblate (German)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/
commit 8e8c42396ec77b763983155e8b1e89cabf38ce17
Author: Patricio Carrau <duckycb@proton.me>
Date: Tue Sep 9 21:59:48 2025 +0200
Translated using Weblate (Spanish)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/
commit be818ab408d00c5c26dfb3b25632604a415d3570
Author: pplulee <hi@pplulee.me>
Date: Mon Sep 8 04:06:54 2025 +0100
fix(i18n): update Chinese translations for location-related terms (#829)
Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com>
commit 9e40dcf6a1dc194d4694a114b3c7e88135121016
Merge: af2f2809 733eefce
Author: Sean Morley <mail@seanmorley.com>
Date: Sun Sep 7 23:03:57 2025 -0400
Merge remote-tracking branch 'weblate/development' into development
commit af2f28090b9242fb7ab263fa5bbb95a5bcc1b27f
Author: Sean Morley <mail@seanmorley.com>
Date: Sun Sep 7 23:00:33 2025 -0400
[BUG] Location Visit End Date not affected by Location Timezone
Fixes #843
commit 733eefceddbdad01726364e5d4523605f095fde2
Author: Alex <div@alexe.at>
Date: Sun Sep 7 23:28:20 2025 +0200
Translated using Weblate (German)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/
commit 6c750d1c8f95b42418893e15ad46c3d4ed86d053
Author: fantastron27 <fantastron27@gmail.com>
Date: Sun Sep 7 09:17:16 2025 +0200
Translated using Weblate (Slovak)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sk/
commit f733b3b96bbddc71d426f2e60320a5ad2f6755af
Merge: 769ea6ad af4e541c
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 21:36:35 2025 -0400
Merge branch 'development' of github.com:seanmorley15/AdventureLog into development
commit 769ea6ad710890e931aabace2c00dc37436f869f
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 21:36:33 2025 -0400
Implement code changes to enhance functionality and improve performance
commit af4e541c1c9e7309857102287199279aec339387
Author: fantastron27 <fantastron27@gmail.com>
Date: Sun Sep 7 03:36:23 2025 +0200
Added Slovak translations (#815)
* Created sk.json
* Update Navbar.svelte
* Update +layout.svelte
---------
Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com>
commit 904474d757577229b47441d1378a6fd6788fbe40
Merge: d4709434 f87a5fe3
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 21:31:58 2025 -0400
Merge remote-tracking branch 'weblate/development' into development
commit d47094346c0b63ea753294a0786414e5e070ae7f
Merge: 4a5f59bf 6366a3eb
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 21:29:39 2025 -0400
Merge remote-tracking branch 'weblate/development' into development
commit f87a5fe3bcc2fe28cfc206fb5cba517bbffa8df6
Author: Sergio <garcia.sergio@me.com>
Date: Sun Sep 7 01:12:50 2025 +0200
Translated using Weblate (Spanish)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/
commit 4a5f59bfd24e32fdf3558b009a8f636636cb3663
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 21:06:17 2025 -0400
Fixes #654
commit c1302bb54ab272c2a98c53ce0d508b7d39e9674b
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 20:52:05 2025 -0400
[BUG] Single day Collections will think location visits are out of date range
Fixes #827
commit 773f2d65bbfb2a9591b31fabfd6844612b840f1a
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 19:52:28 2025 -0400
[BUG] Server Error (500) when trying to access the API docs
Fixes #712
commit 4228db249ed5e3261931a1cdb3895d0ddd3ac4ac
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 19:44:00 2025 -0400
[BUG]Ordered Itinerary includes visits that are outside itinerary date range
Fixes #746
commit 26f36cabb0a860f10d7ba62b5279ddd1e282c78e
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 18:36:50 2025 +0200
Translated using Weblate (Spanish)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/
commit 3bfd2dd5615afdbd04e3451c2ef728f1d7caf466
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 12:33:23 2025 -0400
Remove empty English (United States) locale file
commit 6366a3eba6ab72090e52be474212a663799dfe19
Author: Nikolai Eidsheim <nikolai.eidsheim@gmail.com>
Date: Sat Sep 6 18:10:15 2025 +0200
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/nb_NO/
commit 671cd3701fc5a601f2f1bad9aef93106f91eec0b
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 16:58:04 2025 +0200
Added translation using Weblate (English (United States))
commit bdbbe5f4978f041f620f0503da69fa870cb1997c
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 16:54:43 2025 +0200
Translated using Weblate (Spanish)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/
commit 9d4f1b8f534a3cdfb22812f2a25ababd7a236a87
Author: Jacob <jacob.aulin@proton.me>
Date: Sat Sep 13 15:17:22 2025 +0200
Translated using Weblate (Swedish)
Currently translated at 99.8% (957 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sv/
commit 8fac40cfde425c989521c891b3ba9c75ab32e57e
Author: Christian S <schuld.christian@gmail.com>
Date: Sat Sep 13 12:54:52 2025 +0200
Translated using Weblate (German)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/
commit 8e8c42396ec77b763983155e8b1e89cabf38ce17
Author: Patricio Carrau <duckycb@proton.me>
Date: Tue Sep 9 21:59:48 2025 +0200
Translated using Weblate (Spanish)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/
commit be818ab408d00c5c26dfb3b25632604a415d3570
Author: pplulee <hi@pplulee.me>
Date: Mon Sep 8 04:06:54 2025 +0100
fix(i18n): update Chinese translations for location-related terms (#829)
Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com>
commit 9e40dcf6a1dc194d4694a114b3c7e88135121016
Merge: af2f2809 733eefce
Author: Sean Morley <mail@seanmorley.com>
Date: Sun Sep 7 23:03:57 2025 -0400
Merge remote-tracking branch 'weblate/development' into development
commit af2f28090b9242fb7ab263fa5bbb95a5bcc1b27f
Author: Sean Morley <mail@seanmorley.com>
Date: Sun Sep 7 23:00:33 2025 -0400
[BUG] Location Visit End Date not affected by Location Timezone
Fixes #843
commit 733eefceddbdad01726364e5d4523605f095fde2
Author: Alex <div@alexe.at>
Date: Sun Sep 7 23:28:20 2025 +0200
Translated using Weblate (German)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/
commit 6c750d1c8f95b42418893e15ad46c3d4ed86d053
Author: fantastron27 <fantastron27@gmail.com>
Date: Sun Sep 7 09:17:16 2025 +0200
Translated using Weblate (Slovak)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sk/
commit f733b3b96bbddc71d426f2e60320a5ad2f6755af
Merge: 769ea6ad af4e541c
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 21:36:35 2025 -0400
Merge branch 'development' of github.com:seanmorley15/AdventureLog into development
commit 769ea6ad710890e931aabace2c00dc37436f869f
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 21:36:33 2025 -0400
Implement code changes to enhance functionality and improve performance
commit af4e541c1c9e7309857102287199279aec339387
Author: fantastron27 <fantastron27@gmail.com>
Date: Sun Sep 7 03:36:23 2025 +0200
Added Slovak translations (#815)
* Created sk.json
* Update Navbar.svelte
* Update +layout.svelte
---------
Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com>
commit 904474d757577229b47441d1378a6fd6788fbe40
Merge: d4709434 f87a5fe3
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 21:31:58 2025 -0400
Merge remote-tracking branch 'weblate/development' into development
commit d47094346c0b63ea753294a0786414e5e070ae7f
Merge: 4a5f59bf 6366a3eb
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 21:29:39 2025 -0400
Merge remote-tracking branch 'weblate/development' into development
commit f87a5fe3bcc2fe28cfc206fb5cba517bbffa8df6
Author: Sergio <garcia.sergio@me.com>
Date: Sun Sep 7 01:12:50 2025 +0200
Translated using Weblate (Spanish)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/
commit 4a5f59bfd24e32fdf3558b009a8f636636cb3663
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 21:06:17 2025 -0400
Fixes #654
commit c1302bb54ab272c2a98c53ce0d508b7d39e9674b
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 20:52:05 2025 -0400
[BUG] Single day Collections will think location visits are out of date range
Fixes #827
commit 773f2d65bbfb2a9591b31fabfd6844612b840f1a
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 19:52:28 2025 -0400
[BUG] Server Error (500) when trying to access the API docs
Fixes #712
commit 4228db249ed5e3261931a1cdb3895d0ddd3ac4ac
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 19:44:00 2025 -0400
[BUG]Ordered Itinerary includes visits that are outside itinerary date range
Fixes #746
commit 26f36cabb0a860f10d7ba62b5279ddd1e282c78e
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 18:36:50 2025 +0200
Translated using Weblate (Spanish)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/
commit 3bfd2dd5615afdbd04e3451c2ef728f1d7caf466
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 12:33:23 2025 -0400
Remove empty English (United States) locale file
commit 6366a3eba6ab72090e52be474212a663799dfe19
Author: Nikolai Eidsheim <nikolai.eidsheim@gmail.com>
Date: Sat Sep 6 18:10:15 2025 +0200
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/nb_NO/
commit 671cd3701fc5a601f2f1bad9aef93106f91eec0b
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 16:58:04 2025 +0200
Added translation using Weblate (English (United States))
commit bdbbe5f4978f041f620f0503da69fa870cb1997c
Author: Sean Morley <mail@seanmorley.com>
Date: Sat Sep 6 16:54:43 2025 +0200
Translated using Weblate (Spanish)
Currently translated at 100.0% (956 of 956 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/
* Translated using Weblate (French)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/fr/
* Translated using Weblate (Turkish)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/tr/
* feat: enhance serializers and views for nested representations and lightweight data fetching
* feat: implement caching for visits by country and region endpoints
* feat: update LocationSerializer to include debug logging and adjust nested context handling in CollectionSerializer
* feat: enhance CollectionSerializer and CollectionViewSet to support nested context handling
* feat(worldtravel): add globe spin feature with loading and result display
- Introduced a toggle button for the globe spin feature.
- Implemented fetch logic for globe spin data from the API.
- Added loading state with a spinning globe animation.
- Displayed country information, including flag, subregion, and visit statistics.
- Enhanced UI with animations for loading and displaying results.
- Included error handling for API fetch failures.
* Add Turkish language support to the application
* feat(map): enhance pin styling with gradient backgrounds and improved hover effects
* Squashed commit of the following:
commit 990b0645059421c4a293fbf64830a6d864ceb40e
Author: Henrique Fonseca Veloso <henriquefv@tutamail.com>
Date: Sun Sep 21 00:27:59 2025 +0200
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/pt_BR/
commit 03a4b9235faa849fb817348a2774e834a6851dc3
Author: Orhun <orhunavcu@gmail.com>
Date: Fri Sep 19 19:38:12 2025 +0200
Translated using Weblate (Turkish)
Currently translated at 100.0% (958 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/tr/
commit 1ccdc678627eb5915b56a8bfb3465928c80a524f
Author: Henrique Fonseca Veloso <henriquefv@tutamail.com>
Date: Sat Sep 20 20:01:36 2025 +0200
Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.0% (930 of 958 strings)
Translation: AdventureLog/Web App
Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/pt_BR/
* fix(config): update appVersion to v0.11.0-main-09212025
* fix duration calculation on ordered collection view (#867)
Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com>
* Update frontend/src/routes/worldtravel/+page.svelte
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update backend/server/worldtravel/views.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update frontend/src/routes/map/+page.svelte
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Rohan <Alchez@users.noreply.github.com>
Co-authored-by: Orhun <orhunavcu@gmail.com>
Co-authored-by: vorbeiei <vorbeiei@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { redirect } from '@sveltejs/kit';
|
||||
import type { PageServerLoad } from './$types';
|
||||
const PUBLIC_SERVER_URL = process.env['PUBLIC_SERVER_URL'];
|
||||
import type { Location, VisitedRegion } from '$lib/types';
|
||||
import type { Location, Pin, VisitedRegion } from '$lib/types';
|
||||
const endpoint = PUBLIC_SERVER_URL || 'http://localhost:8000';
|
||||
|
||||
export const load = (async (event) => {
|
||||
@@ -9,7 +9,7 @@ export const load = (async (event) => {
|
||||
return redirect(302, '/login');
|
||||
} else {
|
||||
let sessionId = event.cookies.get('sessionid');
|
||||
let visitedFetch = await fetch(`${endpoint}/api/locations/all/?include_collections=true`, {
|
||||
let pinFetch = await fetch(`${endpoint}/api/locations/pins/`, {
|
||||
headers: {
|
||||
Cookie: `sessionid=${sessionId}`
|
||||
}
|
||||
@@ -22,19 +22,19 @@ export const load = (async (event) => {
|
||||
});
|
||||
|
||||
let visitedRegions = (await visitedRegionsFetch.json()) as VisitedRegion[];
|
||||
let adventures = (await visitedFetch.json()) as Location[];
|
||||
let pins = (await pinFetch.json()) as Pin[];
|
||||
|
||||
if (!visitedRegionsFetch.ok) {
|
||||
console.error('Failed to fetch visited regions');
|
||||
return redirect(302, '/login');
|
||||
} else if (!visitedFetch.ok) {
|
||||
console.error('Failed to fetch visited adventures');
|
||||
} else if (!pinFetch.ok) {
|
||||
console.error('Failed to fetch location pins');
|
||||
return redirect(302, '/login');
|
||||
} else {
|
||||
return {
|
||||
props: {
|
||||
visitedRegions,
|
||||
adventures
|
||||
pins
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
LineLayer
|
||||
} from 'svelte-maplibre';
|
||||
import { t } from 'svelte-i18n';
|
||||
import type { Activity, Location, VisitedCity, VisitedRegion } from '$lib/types.js';
|
||||
import type { Activity, Location, VisitedCity, VisitedRegion, Pin } from '$lib/types.js';
|
||||
import CardCarousel from '$lib/components/CardCarousel.svelte';
|
||||
import { goto } from '$app/navigation';
|
||||
import { basemapOptions, getActivityColor, getBasemapLabel, getBasemapUrl } from '$lib';
|
||||
@@ -20,7 +20,7 @@
|
||||
import Plus from '~icons/mdi/plus';
|
||||
import Clear from '~icons/mdi/close';
|
||||
import Eye from '~icons/mdi/eye';
|
||||
import Pin from '~icons/mdi/map-marker';
|
||||
import PinIcon from '~icons/mdi/map-marker';
|
||||
import Calendar from '~icons/mdi/calendar';
|
||||
import LocationIcon from '~icons/mdi/crosshairs-gps';
|
||||
import NewLocationModal from '$lib/components/NewLocationModal.svelte';
|
||||
@@ -35,17 +35,16 @@
|
||||
let showCities: boolean = false;
|
||||
let sidebarOpen: boolean = false;
|
||||
|
||||
let basemapType: string = 'default'; // default
|
||||
let basemapType: string = 'default';
|
||||
|
||||
export let initialLatLng: { lat: number; lng: number } | null = null;
|
||||
|
||||
let visitedRegions: VisitedRegion[] = data.props.visitedRegions;
|
||||
let visitedCities: VisitedCity[] = [];
|
||||
let adventures: Location[] = data.props.adventures;
|
||||
|
||||
let pins: Pin[] = data.props.pins; // Lightweight pin objects
|
||||
let activities: Activity[] = [];
|
||||
|
||||
let filteredAdventures = adventures;
|
||||
let filteredPins = pins;
|
||||
|
||||
let showVisited: boolean = true;
|
||||
let showPlanned: boolean = true;
|
||||
@@ -54,23 +53,25 @@
|
||||
let newLongitude: number | null = null;
|
||||
let newLatitude: number | null = null;
|
||||
|
||||
let isPopupOpen = false;
|
||||
// Cache for full location data
|
||||
let locationCache: Map<string, Location> = new Map();
|
||||
let loadingLocations: Set<string> = new Set();
|
||||
|
||||
let locationBeingUpdated: Location | undefined = undefined;
|
||||
|
||||
// Statistics
|
||||
$: totalAdventures = adventures.length;
|
||||
$: visitedAdventures = adventures.filter((adventure) => adventure.is_visited).length;
|
||||
$: plannedAdventures = adventures.filter((adventure) => !adventure.is_visited).length;
|
||||
$: totalAdventures = pins.length;
|
||||
$: visitedAdventures = pins.filter((pin) => pin.is_visited).length;
|
||||
$: plannedAdventures = pins.filter((pin) => !pin.is_visited).length;
|
||||
$: totalRegions = visitedRegions.length;
|
||||
|
||||
// Get unique categories for filtering
|
||||
$: categories = [
|
||||
...new Set(adventures.map((adventure) => adventure.category?.display_name).filter(Boolean))
|
||||
];
|
||||
$: categories = [...new Set(pins.map((pin) => pin.category?.display_name).filter(Boolean))];
|
||||
|
||||
// Updates the filtered adventures based on the checkboxes
|
||||
// Updates the filtered pins based on the checkboxes
|
||||
$: {
|
||||
filteredAdventures = adventures.filter(
|
||||
(adventure) => (showVisited && adventure.is_visited) || (showPlanned && !adventure.is_visited)
|
||||
filteredPins = pins.filter(
|
||||
(pin) => (showVisited && pin.is_visited === true) || (showPlanned && pin.is_visited !== true)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -82,22 +83,37 @@
|
||||
}
|
||||
}
|
||||
|
||||
let locationBeingUpdated: Location | undefined = undefined;
|
||||
|
||||
// Sync the locationBeingUpdated with the adventures array
|
||||
// Sync the locationBeingUpdated with the pins array
|
||||
$: {
|
||||
if (locationBeingUpdated && locationBeingUpdated.id) {
|
||||
const index = adventures.findIndex((adventure) => adventure.id === locationBeingUpdated?.id);
|
||||
const index = pins.findIndex((pin) => pin.id === locationBeingUpdated?.id);
|
||||
|
||||
if (index !== -1) {
|
||||
adventures[index] = { ...locationBeingUpdated };
|
||||
adventures = adventures; // Trigger reactivity
|
||||
// Update existing pin with new data
|
||||
pins[index] = {
|
||||
id: locationBeingUpdated.id,
|
||||
name: locationBeingUpdated.name,
|
||||
latitude: locationBeingUpdated.latitude?.toString() || '',
|
||||
longitude: locationBeingUpdated.longitude?.toString() || '',
|
||||
is_visited: locationBeingUpdated.is_visited,
|
||||
category: locationBeingUpdated.category
|
||||
};
|
||||
pins = pins; // Trigger reactivity
|
||||
} else {
|
||||
adventures = [{ ...locationBeingUpdated }, ...adventures];
|
||||
if (data.props.adventures) {
|
||||
data.props.adventures = adventures; // Update data.props.adventure.locations as well
|
||||
}
|
||||
// Add new pin
|
||||
const newPin: Pin = {
|
||||
id: locationBeingUpdated.id,
|
||||
name: locationBeingUpdated.name,
|
||||
latitude: locationBeingUpdated.latitude?.toString() || '',
|
||||
longitude: locationBeingUpdated.longitude?.toString() || '',
|
||||
is_visited: locationBeingUpdated.is_visited,
|
||||
category: locationBeingUpdated.category
|
||||
};
|
||||
pins = [newPin, ...pins];
|
||||
}
|
||||
|
||||
// Also update the cache
|
||||
locationCache.set(locationBeingUpdated.id, locationBeingUpdated);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,6 +140,36 @@
|
||||
visitedCities = await response.json();
|
||||
}
|
||||
|
||||
async function fetchLocationDetails(locationId: string): Promise<Location | null> {
|
||||
// Check cache first
|
||||
if (locationCache.has(locationId)) {
|
||||
return locationCache.get(locationId)!;
|
||||
}
|
||||
|
||||
// Prevent duplicate requests
|
||||
if (loadingLocations.has(locationId)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
loadingLocations.add(locationId);
|
||||
const response = await fetch(`/api/locations/${locationId}`);
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`Failed to fetch location: ${response.statusText}`);
|
||||
}
|
||||
|
||||
const location: Location = await response.json();
|
||||
locationCache.set(locationId, location);
|
||||
return location;
|
||||
} catch (error) {
|
||||
console.error('Error fetching location details:', error);
|
||||
return null;
|
||||
} finally {
|
||||
loadingLocations.delete(locationId);
|
||||
}
|
||||
}
|
||||
|
||||
function addMarker(e: { detail: { lngLat: { lng: any; lat: any } } }) {
|
||||
newMarker = null;
|
||||
newMarker = { lngLat: e.detail.lngLat };
|
||||
@@ -137,22 +183,43 @@
|
||||
}
|
||||
|
||||
function createNewAdventure(event: CustomEvent) {
|
||||
adventures = [...adventures, event.detail];
|
||||
const location: Location = event.detail;
|
||||
|
||||
// Add to pins array
|
||||
const newPin: Pin = {
|
||||
id: location.id,
|
||||
name: location.name,
|
||||
latitude: location.latitude?.toString() || '',
|
||||
longitude: location.longitude?.toString() || '',
|
||||
is_visited: location.is_visited,
|
||||
category: location.category
|
||||
};
|
||||
|
||||
pins = [...pins, newPin];
|
||||
|
||||
// Add to cache
|
||||
locationCache.set(location.id, location);
|
||||
|
||||
newMarker = null;
|
||||
createModalOpen = false;
|
||||
}
|
||||
|
||||
function togglePopup() {
|
||||
isPopupOpen = !isPopupOpen;
|
||||
}
|
||||
|
||||
function toggleSidebar() {
|
||||
sidebarOpen = !sidebarOpen;
|
||||
}
|
||||
|
||||
function clearMarker() {
|
||||
newMarker = null;
|
||||
}
|
||||
|
||||
// Function to handle popup opening - only fetch when actually needed
|
||||
let openPopups = new Set<string>();
|
||||
|
||||
function handlePopupOpen(pinId: string) {
|
||||
openPopups.add(pinId);
|
||||
openPopups = openPopups; // Trigger reactivity
|
||||
}
|
||||
|
||||
function handlePopupClose(pinId: string) {
|
||||
openPopups.delete(pinId);
|
||||
openPopups = openPopups; // Trigger reactivity
|
||||
}
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
@@ -170,7 +237,10 @@
|
||||
<div class="container mx-auto px-6 py-4">
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center gap-4">
|
||||
<button class="btn btn-ghost btn-square lg:hidden" on:click={toggleSidebar}>
|
||||
<button
|
||||
class="btn btn-ghost btn-square lg:hidden"
|
||||
on:click={() => (sidebarOpen = !sidebarOpen)}
|
||||
>
|
||||
<Filter class="w-5 h-5" />
|
||||
</button>
|
||||
<div class="flex items-center gap-3">
|
||||
@@ -182,7 +252,7 @@
|
||||
{$t('map.location_map')}
|
||||
</h1>
|
||||
<p class="text-sm text-base-content/60">
|
||||
{filteredAdventures.length}
|
||||
{filteredPins.length}
|
||||
{$t('worldtravel.of')}
|
||||
{totalAdventures}
|
||||
{$t('map.locations_shown')}
|
||||
@@ -252,101 +322,146 @@
|
||||
class="w-full h-full min-h-[70vh] rounded-lg"
|
||||
standardControls
|
||||
>
|
||||
{#each filteredAdventures as adventure}
|
||||
{#if adventure.latitude && adventure.longitude}
|
||||
{#each filteredPins as pin}
|
||||
{#if pin.latitude && pin.longitude}
|
||||
<Marker
|
||||
lngLat={[adventure.longitude, adventure.latitude]}
|
||||
class="grid h-8 w-8 place-items-center rounded-full border border-gray-200 shadow-lg cursor-pointer hover:scale-110 transition-transform {adventure.is_visited
|
||||
? 'bg-red-300 hover:bg-red-400'
|
||||
: 'bg-blue-300 hover:bg-blue-400'} text-black focus:outline-6 focus:outline-black"
|
||||
on:click={togglePopup}
|
||||
lngLat={[parseFloat(pin.longitude), parseFloat(pin.latitude)]}
|
||||
class="grid h-8 w-8 place-items-center rounded-full border-2 border-white shadow-lg cursor-pointer hover:scale-110 transition-all duration-200 {pin.is_visited
|
||||
? 'bg-gradient-to-br from-emerald-400 to-emerald-600 hover:from-emerald-500 hover:to-emerald-700'
|
||||
: 'bg-gradient-to-br from-blue-400 to-blue-600 hover:from-blue-500 hover:to-blue-700'} text-white focus:outline-4 focus:outline-primary/50"
|
||||
>
|
||||
<span class="text-xl">
|
||||
{adventure.category?.icon || '📍'}
|
||||
{pin.category?.icon || '📍'}
|
||||
</span>
|
||||
{#if isPopupOpen}
|
||||
<Popup
|
||||
openOn="click"
|
||||
offset={[0, -10]}
|
||||
on:close={() => (isPopupOpen = false)}
|
||||
>
|
||||
<div class="min-w-64 max-w-sm">
|
||||
{#if adventure.images && adventure.images.length > 0}
|
||||
<div class="mb-3">
|
||||
<CardCarousel
|
||||
images={adventure.images}
|
||||
name={adventure.name}
|
||||
icon={adventure?.category?.icon}
|
||||
/>
|
||||
|
||||
<Popup
|
||||
openOn="click"
|
||||
offset={[0, -10]}
|
||||
on:open={() => handlePopupOpen(pin.id)}
|
||||
on:close={() => handlePopupClose(pin.id)}
|
||||
>
|
||||
<div class="min-w-64 max-w-sm">
|
||||
{#if openPopups.has(pin.id)}
|
||||
{#await fetchLocationDetails(pin.id)}
|
||||
<div class="flex items-center justify-center p-4">
|
||||
<span class="loading loading-spinner loading-sm"></span>
|
||||
<span class="ml-2 text-sm">Loading details...</span>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="space-y-2">
|
||||
<div class="text-lg text-black font-bold">{adventure.name}</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<span
|
||||
class="badge {adventure.is_visited
|
||||
? 'badge-success'
|
||||
: 'badge-info'} badge-sm"
|
||||
>
|
||||
{adventure.is_visited
|
||||
? $t('adventures.visited')
|
||||
: $t('adventures.planned')}
|
||||
</span>
|
||||
{#if adventure.category}
|
||||
<span class="badge badge-outline badge-sm">
|
||||
{adventure.category.display_name}
|
||||
{adventure.category.icon}
|
||||
</span>
|
||||
{:then location}
|
||||
{#if location}
|
||||
{#if location.images && location.images.length > 0}
|
||||
<div class="mb-3">
|
||||
<CardCarousel
|
||||
images={location.images}
|
||||
name={location.name}
|
||||
icon={location?.category?.icon}
|
||||
/>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
{#if adventure.visits && adventure.visits.length > 0}
|
||||
<div class="text-black text-sm space-y-1">
|
||||
{#each adventure.visits as visit}
|
||||
<div class="flex items-center gap-1">
|
||||
<Calendar class="w-3 h-3" />
|
||||
<span>
|
||||
{visit.start_date
|
||||
? new Date(visit.start_date).toLocaleDateString(undefined, {
|
||||
timeZone: 'UTC'
|
||||
})
|
||||
: ''}
|
||||
{visit.end_date &&
|
||||
visit.end_date !== '' &&
|
||||
visit.end_date !== visit.start_date
|
||||
? ' - ' +
|
||||
new Date(visit.end_date).toLocaleDateString(undefined, {
|
||||
timeZone: 'UTC'
|
||||
})
|
||||
: ''}
|
||||
<div class="space-y-2">
|
||||
<div class="text-lg text-black font-bold">{location.name}</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<span
|
||||
class="badge {location.is_visited
|
||||
? 'badge-success'
|
||||
: 'badge-info'} badge-sm"
|
||||
>
|
||||
{location.is_visited
|
||||
? $t('adventures.visited')
|
||||
: $t('adventures.planned')}
|
||||
</span>
|
||||
{#if location.category}
|
||||
<span class="badge badge-outline badge-sm">
|
||||
{location.category.display_name}
|
||||
{location.category.icon}
|
||||
</span>
|
||||
{/if}
|
||||
</div>
|
||||
{#if location.visits && location.visits.length > 0}
|
||||
<div class="text-black text-sm space-y-1">
|
||||
{#each location.visits as visit}
|
||||
<div class="flex items-center gap-1">
|
||||
<Calendar class="w-3 h-3" />
|
||||
<span>
|
||||
{visit.start_date
|
||||
? new Date(visit.start_date).toLocaleDateString(
|
||||
undefined,
|
||||
{
|
||||
timeZone: 'UTC'
|
||||
}
|
||||
)
|
||||
: ''}
|
||||
{visit.end_date &&
|
||||
visit.end_date !== '' &&
|
||||
visit.end_date !== visit.start_date
|
||||
? ' - ' +
|
||||
new Date(visit.end_date).toLocaleDateString(
|
||||
undefined,
|
||||
{
|
||||
timeZone: 'UTC'
|
||||
}
|
||||
)
|
||||
: ''}
|
||||
</span>
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
{/each}
|
||||
{/if}
|
||||
<div class="flex flex-col gap-2 pt-2">
|
||||
{#if location.longitude && location.latitude}
|
||||
<a
|
||||
class="btn btn-outline btn-sm gap-2"
|
||||
href={`https://maps.apple.com/?q=${location.latitude},${location.longitude}`}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<LocationIcon class="w-4 h-4" />
|
||||
{$t('adventures.open_in_maps')}
|
||||
</a>
|
||||
{/if}
|
||||
<button
|
||||
class="btn btn-primary btn-sm gap-2"
|
||||
on:click={() => goto(`/locations/${location.id}`)}
|
||||
>
|
||||
<Eye class="w-4 h-4" />
|
||||
{$t('map.view_details')}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
{:else}
|
||||
<div class="p-4 text-center">
|
||||
<div class="text-lg text-black font-bold">{pin.name}</div>
|
||||
<div class="text-sm text-gray-600">Failed to load details</div>
|
||||
<button
|
||||
class="btn btn-primary btn-sm gap-2 mt-2"
|
||||
on:click={() => goto(`/locations/${pin.id}`)}
|
||||
>
|
||||
<Eye class="w-4 h-4" />
|
||||
{$t('map.view_details')}
|
||||
</button>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="flex flex-col gap-2 pt-2">
|
||||
{#if adventure.longitude && adventure.latitude}
|
||||
<a
|
||||
class="btn btn-outline btn-sm gap-2"
|
||||
href={`https://maps.apple.com/?q=${adventure.latitude},${adventure.longitude}`}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<LocationIcon class="w-4 h-4" />
|
||||
{$t('adventures.open_in_maps')}
|
||||
</a>
|
||||
{/if}
|
||||
{:catch error}
|
||||
<div class="p-4 text-center">
|
||||
<div class="text-lg text-black font-bold">{pin.name}</div>
|
||||
<div class="text-sm text-red-600">Error loading details</div>
|
||||
<button
|
||||
class="btn btn-primary btn-sm gap-2"
|
||||
on:click={() => goto(`/locations/${adventure.id}`)}
|
||||
class="btn btn-primary btn-sm gap-2 mt-2"
|
||||
on:click={() => goto(`/locations/${pin.id}`)}
|
||||
>
|
||||
<Eye class="w-4 h-4" />
|
||||
{$t('map.view_details')}
|
||||
</button>
|
||||
</div>
|
||||
{/await}
|
||||
{:else}
|
||||
<div class="p-4 text-center">
|
||||
<div class="text-lg text-black font-bold">{pin.name}</div>
|
||||
<div class="text-sm text-gray-600">Click to load details...</div>
|
||||
</div>
|
||||
</div>
|
||||
</Popup>
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
</Popup>
|
||||
</Marker>
|
||||
{/if}
|
||||
{/each}
|
||||
@@ -551,7 +666,7 @@
|
||||
{#if newMarker}
|
||||
<div class="space-y-3">
|
||||
<div class="alert alert-info">
|
||||
<Pin class="w-4 h-4" />
|
||||
<PinIcon class="w-4 h-4" />
|
||||
<span class="text-sm">{$t('map.marker_placed_on_map')}</span>
|
||||
</div>
|
||||
<button type="button" class="btn btn-primary w-full gap-2" on:click={newAdventure}>
|
||||
|
||||
Reference in New Issue
Block a user