fix: enabledVessels 토글 시 모델 중심 경로 재계산

- setEnabledVessels: rawCorrelationTracks로 modelCenterTrails 재빌드
- rawCorrelationTracks 필드 추가 (원본 트랙 보존)
- 선박/어구 on/off → 폴리곤 + 중심경로 + 중심점 동시 갱신

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
htlee 2026-03-31 09:56:46 +09:00
부모 c97f964f93
커밋 bf412cc897

파일 보기

@ -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<GearReplayState>()(
historyFrames: [],
frameTimes: [],
selectedGroupKey: null,
rawCorrelationTracks: [],
// Pre-computed layer data
memberTripsData: [],
@ -178,6 +180,7 @@ export const useGearReplayStore = create<GearReplayState>()(
startTime,
endTime,
currentTime: startTime,
rawCorrelationTracks: corrTracks,
memberTripsData: memberTrips,
correlationTripsData: corrTrips,
centerTrailSegments: segments,
@ -224,7 +227,13 @@ export const useGearReplayStore = create<GearReplayState>()(
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<GearReplayState>()(
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<GearReplayState>()(
historyFrames: [],
frameTimes: [],
selectedGroupKey: null,
rawCorrelationTracks: [],
memberTripsData: [],
correlationTripsData: [],
centerTrailSegments: [],