diff --git a/frontend/src/stores/gearReplayStore.ts b/frontend/src/stores/gearReplayStore.ts index 04ade5c..d32a066 100644 --- a/frontend/src/stores/gearReplayStore.ts +++ b/frontend/src/stores/gearReplayStore.ts @@ -58,6 +58,7 @@ interface GearReplayState { historyFrames: HistoryFrame[]; frameTimes: number[]; selectedGroupKey: string | null; + rawCorrelationTracks: CorrelationVesselTrack[]; // Pre-computed layer data memberTripsData: TripsLayerDatum[]; @@ -134,6 +135,7 @@ export const useGearReplayStore = create()( historyFrames: [], frameTimes: [], selectedGroupKey: null, + rawCorrelationTracks: [], // Pre-computed layer data memberTripsData: [], @@ -178,6 +180,7 @@ export const useGearReplayStore = create()( startTime, endTime, currentTime: startTime, + rawCorrelationTracks: corrTracks, memberTripsData: memberTrips, correlationTripsData: corrTrips, centerTrailSegments: segments, @@ -224,7 +227,13 @@ export const useGearReplayStore = create()( setEnabledModels: (models) => set({ enabledModels: models }), - setEnabledVessels: (vessels) => set({ enabledVessels: vessels }), + setEnabledVessels: (vessels) => { + const state = get(); + const modelTrails = state.historyFrames.length > 0 + ? buildModelCenterTrails(state.historyFrames, state.rawCorrelationTracks, state.correlationByModel, vessels, state.startTime) + : []; + set({ enabledVessels: vessels, modelCenterTrails: modelTrails }); + }, setHoveredMmsi: (mmsi) => set({ hoveredMmsi: mmsi }), setShowTrails: (show) => set({ showTrails: show }), @@ -250,7 +259,7 @@ export const useGearReplayStore = create()( corrTracks: corrTracks.length, }); const modelTrails = buildModelCenterTrails(state.historyFrames, corrTracks, byModel, state.enabledVessels, state.startTime); - set({ correlationByModel: byModel, correlationTripsData: corrTrips, modelCenterTrails: modelTrails }); + set({ correlationByModel: byModel, correlationTripsData: corrTrips, modelCenterTrails: modelTrails, rawCorrelationTracks: corrTracks }); }, reset: () => { @@ -268,6 +277,7 @@ export const useGearReplayStore = create()( historyFrames: [], frameTimes: [], selectedGroupKey: null, + rawCorrelationTracks: [], memberTripsData: [], correlationTripsData: [], centerTrailSegments: [],