From c1aadece2977a169f6ef06bb936ba410ccd7a8a6 Mon Sep 17 00:00:00 2001 From: MarcoJayUsai Date: Sat, 29 Mar 2025 11:33:01 +0100 Subject: [PATCH] feat(map): session data is now saving selected map source --- frontend/react/src/interfaces.ts | 1 + frontend/react/src/map/map.ts | 8 +++++++- frontend/react/src/sessiondata.ts | 10 ++++++++-- frontend/react/src/ui/panels/header.tsx | 8 +++++++- frontend/react/src/ui/panels/maptoolbar.tsx | 4 ++-- 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/frontend/react/src/interfaces.ts b/frontend/react/src/interfaces.ts index 847c1a08..36c470f2 100644 --- a/frontend/react/src/interfaces.ts +++ b/frontend/react/src/interfaces.ts @@ -61,6 +61,7 @@ export interface SessionData { starredSpawns?: { [key: number]: SpawnRequestTable }; drawings?: { [key: string]: { visibility: boolean; opacity: number; name: string; guid: string; containers: any; drawings: any } }; navpoints?: { [key: string]: { visibility: boolean; opacity: number; name: string; guid: string; containers: any; drawings: any } }; + mapSource?: { id: string }; } export interface ProfileOptions { diff --git a/frontend/react/src/map/map.ts b/frontend/react/src/map/map.ts index 13147d3d..3a3870de 100644 --- a/frontend/react/src/map/map.ts +++ b/frontend/react/src/map/map.ts @@ -310,6 +310,12 @@ export class Map extends L.Map { this.#starredSpawnRequestTables = localSessionData.starredSpawns; StarredSpawnsChangedEvent.dispatch(this.#starredSpawnRequestTables); } + + setTimeout(() => { + if (sessionData.mapSource?.id) { + this.setLayerName(sessionData.mapSource.id); + } + }, 500); }); window.addEventListener("blur", () => { @@ -1014,7 +1020,7 @@ export class Map extends L.Map { } } - #onMouseWheelPressed(e: any) {} + #onMouseWheelPressed(e: any) { } #onRightMousePressed(e: any) { this.dragging.disable(); diff --git a/frontend/react/src/sessiondata.ts b/frontend/react/src/sessiondata.ts index 4eadc9e0..d0d26479 100644 --- a/frontend/react/src/sessiondata.ts +++ b/frontend/react/src/sessiondata.ts @@ -10,6 +10,7 @@ import { CoalitionAreasChangedEvent, DrawingsUpdatedEvent, HotgroupsChangedEvent, + MapSourceChangedEvent, SessionDataChangedEvent, SessionDataLoadedEvent, SessionDataSavedEvent, @@ -136,8 +137,13 @@ export class SessionDataManager { DrawingsUpdatedEvent.on(() => { let mainDrawingsContainer = getApp().getDrawingsManager().getDrawingsContainer(); let navpointsContainer = getApp().getDrawingsManager().getNavpointsContainer(); - this.#sessionData.drawings = {"Mission drawings": mainDrawingsContainer.toJSON()}; - this.#sessionData.navpoints = {"Navpoints": navpointsContainer.toJSON()}; + this.#sessionData.drawings = { "Mission drawings": mainDrawingsContainer.toJSON() }; + this.#sessionData.navpoints = { "Navpoints": navpointsContainer.toJSON() }; + this.#saveSessionData(); + }); + + MapSourceChangedEvent.on((source) => { + this.#sessionData.mapSource = { id: source }; this.#saveSessionData(); }); }, 200); diff --git a/frontend/react/src/ui/panels/header.tsx b/frontend/react/src/ui/panels/header.tsx index 9f0cabde..f874cac6 100644 --- a/frontend/react/src/ui/panels/header.tsx +++ b/frontend/react/src/ui/panels/header.tsx @@ -25,6 +25,7 @@ import { MapOptionsChangedEvent, MapSourceChangedEvent, SessionDataChangedEvent, + SessionDataLoadedEvent, SessionDataSavedEvent, } from "../../events"; import { @@ -65,7 +66,9 @@ export function Header() { MapOptionsChangedEvent.on((mapOptions) => { setMapOptions({ ...mapOptions }); }); - MapSourceChangedEvent.on((source) => setMapSource(source)); + MapSourceChangedEvent.on((source) => { + setMapSource(source); + }); ConfigLoadedEvent.on((config: OlympusConfig) => { // Timeout needed to make sure the map configuration has updated window.setTimeout(() => { @@ -79,6 +82,9 @@ export function Header() { }); SessionDataChangedEvent.on(() => setSavingSessionData(true)); SessionDataSavedEvent.on(() => setSavingSessionData(false)); + SessionDataLoadedEvent.on((sessionData) => { + sessionData.mapSource && setMapSource(sessionData.mapSource.id); + }) EnabledCommandModesChangedEvent.on((enabledCommandModes) => setEnabledCommandModes(enabledCommandModes)); AudioManagerStateChangedEvent.on((state) => setAudioState(state as AudioManagerState)); diff --git a/frontend/react/src/ui/panels/maptoolbar.tsx b/frontend/react/src/ui/panels/maptoolbar.tsx index 8643c564..255a54c6 100644 --- a/frontend/react/src/ui/panels/maptoolbar.tsx +++ b/frontend/react/src/ui/panels/maptoolbar.tsx @@ -157,7 +157,7 @@ export function MapToolBar(props: {}) { <>
Zoom map in
} @@ -167,7 +167,7 @@ export function MapToolBar(props: {}) { }} />
Zoom map out
}