From bf412cc8970b63e00f1b9a63d0d6021f4f17dcd7 Mon Sep 17 00:00:00 2001 From: htlee Date: Tue, 31 Mar 2026 09:56:46 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20enabledVessels=20=ED=86=A0=EA=B8=80=20?= =?UTF-8?q?=EC=8B=9C=20=EB=AA=A8=EB=8D=B8=20=EC=A4=91=EC=8B=AC=20=EA=B2=BD?= =?UTF-8?q?=EB=A1=9C=20=EC=9E=AC=EA=B3=84=EC=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - setEnabledVessels: rawCorrelationTracks로 modelCenterTrails 재빌드 - rawCorrelationTracks 필드 추가 (원본 트랙 보존) - 선박/어구 on/off → 폴리곤 + 중심경로 + 중심점 동시 갱신 Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/src/stores/gearReplayStore.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) 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: [],