From 25c60ef99e2e5db00ee97fb49d53f31da22ce15c Mon Sep 17 00:00:00 2001 From: rickytrevor <68646879+rickytrevor@users.noreply.github.com> Date: Thu, 27 Aug 2026 20:39:32 +0200 Subject: [PATCH] feat(web): view assets in map viewport (#27492) --- i18n/en.json | 2 + .../shared-components/map/Map.svelte | 62 +++++++++++++++++-- web/src/lib/modals/MapSettingsModal.svelte | 3 + web/src/lib/stores/preferences.store.ts | 2 + .../[[assetId=id]]/+page.svelte | 10 ++- .../[[assetId=id]]/MapTimelinePanel.svelte | 2 +- 6 files changed, 75 insertions(+), 6 deletions(-) diff --git a/i18n/en.json b/i18n/en.json index 4b1e0945b3..412fbfcd40 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -2038,6 +2038,7 @@ "show_albums": "Show albums", "show_all_people": "Show all people", "show_and_hide_people": "Show & hide people", + "show_asset_panel_on_map": "Show asset panel by default", "show_file_location": "Show file location", "show_gallery": "Show gallery", "show_hidden_people": "Show hidden people", @@ -2050,6 +2051,7 @@ "show_or_hide_info": "Show or hide info", "show_password": "Show password", "show_person_options": "Show person options", + "show_photos_in_area": "Show photos in this area", "show_progress_bar": "Show Progress Bar", "show_schema": "Show schema", "show_search_options": "Show search options", diff --git a/web/src/lib/components/shared-components/map/Map.svelte b/web/src/lib/components/shared-components/map/Map.svelte index a7e3420c7d..4092a4aa98 100644 --- a/web/src/lib/components/shared-components/map/Map.svelte +++ b/web/src/lib/components/shared-components/map/Map.svelte @@ -11,13 +11,14 @@ - - + { event.setMaxZoom(18); event.on('click', handleMapClick); + event.on('moveend', handleMoveEnd); if (!simplified) { event.addControl(new GlobeControl(), 'top-left'); } @@ -351,6 +396,15 @@ {#if !simplified} + {#if onClusterSelect} + + + (viewportGridActive ? onViewportClose?.() : handleViewportSelect())}> + + + + + {/if} {/if} diff --git a/web/src/lib/modals/MapSettingsModal.svelte b/web/src/lib/modals/MapSettingsModal.svelte index 78d820af15..4c1d717e0d 100644 --- a/web/src/lib/modals/MapSettingsModal.svelte +++ b/web/src/lib/modals/MapSettingsModal.svelte @@ -36,6 +36,9 @@ + + + {#if customDateRange}
diff --git a/web/src/lib/stores/preferences.store.ts b/web/src/lib/stores/preferences.store.ts index ccd07d529c..59cc58ac1e 100644 --- a/web/src/lib/stores/preferences.store.ts +++ b/web/src/lib/stores/preferences.store.ts @@ -25,6 +25,7 @@ export interface MapSettings { onlyFavorites: boolean; withPartners: boolean; withSharedAlbums: boolean; + showAssetPanel: boolean; relativeDate: string; dateAfter?: string; dateBefore?: string; @@ -36,6 +37,7 @@ const defaultMapSettings = { onlyFavorites: false, withPartners: false, withSharedAlbums: false, + showAssetPanel: false, relativeDate: '', }; diff --git a/web/src/routes/(user)/map/[[photos=photos]]/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/map/[[photos=photos]]/[[assetId=id]]/+page.svelte index 0519398da1..d5c80dbadb 100644 --- a/web/src/routes/(user)/map/[[photos=photos]]/[[assetId=id]]/+page.svelte +++ b/web/src/routes/(user)/map/[[photos=photos]]/[[assetId=id]]/+page.svelte @@ -11,6 +11,7 @@ import { handlePromiseError } from '$lib/utils'; import { delay } from '$lib/utils/asset-utils'; import { navigate } from '$lib/utils/navigation'; + import { mapSettings } from '$lib/stores/preferences.store'; import { LoadingSpinner } from '@immich/ui'; import { onDestroy } from 'svelte'; import type { PageData } from './$types'; @@ -69,7 +70,14 @@
{/await} {:then { default: Map }} - + {/await} diff --git a/web/src/routes/(user)/map/[[photos=photos]]/[[assetId=id]]/MapTimelinePanel.svelte b/web/src/routes/(user)/map/[[photos=photos]]/[[assetId=id]]/MapTimelinePanel.svelte index 95a4d0974b..7bc4e42777 100644 --- a/web/src/routes/(user)/map/[[photos=photos]]/[[assetId=id]]/MapTimelinePanel.svelte +++ b/web/src/routes/(user)/map/[[photos=photos]]/[[assetId=id]]/MapTimelinePanel.svelte @@ -86,7 +86,7 @@ ? AssetVisibility.Timeline : $mapSettings.includeArchived ? undefined - : AssetVisibility.Archive, + : AssetVisibility.Timeline, isFavorite: $mapSettings.onlyFavorites || undefined, withPartners: $mapSettings.withPartners || undefined, assetFilter: selectedClusterIds,