sn: 침수예측오버레이 수정

This commit is contained in:
2026-09-17 15:41:08 +09:00
parent febcd18eda
commit 91576f401b
2 changed files with 16 additions and 5 deletions
+10 -1
View File
@@ -131,6 +131,7 @@ import FldngHstryLayerSettingPanel from "./components/fldngHstry/FldngHstryLayer
import ExmnLayerSettingPanel from "./components/exmn/ExmnLayerSettingPanel";
import LayerSettingCard from "./components/layerSetting/LayerSettingCard";
import { getExmnMapLayer } from "./components/exmn/exmnMapApi";
import { getFloodRiskGradeClassName } from "@/features/fldngPredcPrst/ui/FldngPredcPrstPopupContent";
import {
EMPTY_EXMN_MAP_FILTERS,
EXMN_RESULT_MNHL_LAYER_ID,
@@ -1826,9 +1827,17 @@ const Map = () => {
key.style.cssText =
"font-weight:400; padding:2px 8px 2px 2px; white-space:nowrap; border-bottom:1px solid #e5e7eb;";
const val = tr.insertCell();
val.textContent = value;
val.style.cssText =
"font-weight:400; text-align:right; padding:2px 2px; white-space:nowrap; border-bottom:1px solid #e5e7eb;";
if (label === "침수위험도") {
// 침수예측현황 목록과 같은 배지 스타일로 등급을 표시한다.
const badge = document.createElement("span");
badge.textContent = value;
badge.className = `sn-popup-badge min-w-[44px] ${getFloodRiskGradeClassName(String(value ?? ""))}`;
val.append(badge);
} else {
val.textContent = value;
}
});
container.append(close, table);
const overlay = new Overlay({
@@ -59,7 +59,9 @@ type Filters = {
const PAGE_SIZE = 10;
const EXCEL_DOWNLOAD_PAGE_SIZE = 500;
const MAP_FREQUENCIES = new Set([30, 50, 80, 100]);
const FREQUENCY_OPTIONS = [30, 50, 80, 100] as const;
const FREQUENCY_OPTIONS = [
5, 10, 20, 30, 50, 80, 100
] as const;
/** 도시침수지도 DB의 3자리 빈도 코드로 변환한다. 30년 이하는 030, 100년 초과는 100으로 제한한다. */
const toFloodMapFrequencyCode = (value: number) => {
@@ -181,10 +183,10 @@ const validateFilters = (filters: Filters) => {
if (
filters.frequencyYear != "0" &&
!FREQUENCY_OPTIONS.includes(
Number(filters.frequencyYear) as 30 | 50 | 80 | 100,
Number(filters.frequencyYear) as (typeof FREQUENCY_OPTIONS)[number],
)
) {
return "초과 빈도는 30년, 50년, 80년, 100년 중에서 선택해야 합니다.";
return `초과 빈도는 ${FREQUENCY_OPTIONS.join("·")}년 중에서 선택해야 합니다.`;
}
return null;
};
@@ -193,7 +195,7 @@ const buildRowId = (row: ApiRow) =>
`${row.ctpvCd}:${row.sggCd}:${row.rainBeginningDateTime}:${row.analysisDateTime}:${row.predictionHour}`;
/** 침수위험도 등급을 목록 배지의 고정 의미색으로 변환한다. */
const getFloodRiskGradeClassName = (value: string) => {
export const getFloodRiskGradeClassName = (value: string) => {
const grade = String(value ?? "")
.trim()
.toUpperCase();