From 48b5e876acf06972785b3056a572f00ac4ba503c Mon Sep 17 00:00:00 2001 From: Nan Kyung Lee Date: Mon, 16 Mar 2026 08:58:06 +0900 Subject: [PATCH] =?UTF-8?q?feat(prediction):=20=EB=B2=94=EB=A1=80=20UI=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0=20=E2=80=94=20HTML=20=EC=B0=B8=EA=B3=A0=20?= =?UTF-8?q?=EB=94=94=EC=9E=90=EC=9D=B8=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 모델별 색상 라인 (KOSPS/POSEIDON/OpenDrift/앙상블) - 오일펜스 라인 아이콘 (점 3개) - 도달시간별 선종 표시: 위험(<6h), 경고(6~12h), 주의(12~24h), 안전 - 범례 사이즈 축소 (폰트 10px, 패딩 축소) - 접기/펼치기 토글 (▶/▼) Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/common/components/map/MapView.tsx | 91 +++++++++++-------- 1 file changed, 51 insertions(+), 40 deletions(-) diff --git a/frontend/src/common/components/map/MapView.tsx b/frontend/src/common/components/map/MapView.tsx index 6877a38..46b0d98 100755 --- a/frontend/src/common/components/map/MapView.tsx +++ b/frontend/src/common/components/map/MapView.tsx @@ -1059,7 +1059,7 @@ interface MapLegendProps { selectedModels?: Set } -function MapLegend({ dispersionResult, incidentCoord, oilTrajectory = [], boomLines = [], selectedModels = new Set(['OpenDrift'] as PredictionModel[]) }: MapLegendProps) { +function MapLegend({ dispersionResult, incidentCoord, oilTrajectory = [], selectedModels = new Set(['OpenDrift'] as PredictionModel[]) }: MapLegendProps) { const [minimized, setMinimized] = useState(false) if (dispersionResult && incidentCoord) { @@ -1124,48 +1124,59 @@ function MapLegend({ dispersionResult, incidentCoord, oilTrajectory = [], boomLi if (oilTrajectory.length > 0) { return ( -
- {/* 헤더 + 최소화 버튼 */} -
setMinimized(!minimized)}> -

범례

- {minimized ? '▶' : '▼'} +
+ {/* 헤더 + 접기/펼치기 */} +
setMinimized(!minimized)} + > + 범례 + {minimized ? '▶' : '▼'}
+ {!minimized && ( -
-
- {Array.from(selectedModels).map(model => ( -
-
- {model} -
- ))} - {selectedModels.size === 3 && ( -
- (앙상블 모드) -
- )} -
-
-
- 사고 지점 +
+ {/* 모델별 색상 */} + {Array.from(selectedModels).map(model => ( +
+
+ {model}
- {boomLines.length > 0 && ( - <> -
-
-
- 긴급 오일펜스 -
-
-
- 중요 오일펜스 -
-
-
- 보통 오일펜스 -
- - )} + ))} + {/* 앙상블 */} +
+
+ 앙상블 +
+ + {/* 오일펜스 라인 */} +
+
+
+
+
+
+
+ 오일펜스 라인 +
+ + {/* 도달시간별 선종 */} +
+
+
+ 위험 (<6h) +
+
+
+ 경고 (6~12h) +
+
+
+ 주의 (12~24h) +
+
+
+ 안전
)}