통수위험 매핑 시설 지도 표출 및 과거이력 행 식별 보완
This commit is contained in:
@@ -174,9 +174,16 @@ const postMessageToOpener = (
|
||||
const getRiskBadgeClassName = (riskStatus: "DANGER" | "NORMAL") =>
|
||||
riskStatus === "DANGER" ? "sn-popup-badge-danger" : "sn-popup-badge-normal";
|
||||
|
||||
/** 날짜까지 포함해 과거 이력에서도 결과 행 선택을 유일하게 식별한다. */
|
||||
/** 동일 날짜·지역에 여러 강우이벤트가 있어도 실행별 행 키가 겹치지 않게 식별한다. */
|
||||
const buildResultRowKey = (row: WaterRiskResultRow) =>
|
||||
`${row.analysisDate ?? ""}:${row.ctpvCd ?? ""}:${row.sggCd ?? ""}:${row.areaId}`;
|
||||
[
|
||||
row.analysisDate ?? "",
|
||||
row.rainStartedAt ?? "",
|
||||
row.analysisBaseAt ?? "",
|
||||
row.ctpvCd ?? "",
|
||||
row.sggCd ?? "",
|
||||
row.areaId,
|
||||
].join(":");
|
||||
|
||||
/** 실제 통수위험 API를 조회하고 선택 결과를 부모 지도에 전달하는 팝업이다. */
|
||||
export default function WaterRiskPopupPage(_props: WindowPopupContentProps) {
|
||||
|
||||
@@ -3432,6 +3432,17 @@ const Map = () => {
|
||||
[selectedWaterRiskApiResult],
|
||||
);
|
||||
|
||||
// 지도카드는 실제 GIS geometry까지 결합된 mapView 위험상태를 목록 상태보다 우선한다.
|
||||
const selectedWaterRiskDisplayStatus = useMemo<
|
||||
WaterRiskResultRow["riskStatus"]
|
||||
>(
|
||||
() =>
|
||||
selectedWaterRiskMapView?.riskStatus ??
|
||||
selectedWaterRiskResultRow?.riskStatus ??
|
||||
"NORMAL",
|
||||
[selectedWaterRiskMapView?.riskStatus, selectedWaterRiskResultRow?.riskStatus],
|
||||
);
|
||||
|
||||
/** 선택 영역 오른쪽에 중점관리지역 강우·침수 요약카드를 배치한다. */
|
||||
const syncWaterRiskInfoCardPosition = useCallback(() => {
|
||||
const map = gisMaps.current;
|
||||
@@ -8781,20 +8792,25 @@ const Map = () => {
|
||||
</div>
|
||||
<span
|
||||
className={`inline-flex min-w-[48px] items-center justify-center rounded-full px-[7px] py-[5px] text-[10px] font-bold ${
|
||||
selectedWaterRiskResultRow.riskStatus === "DANGER"
|
||||
selectedWaterRiskDisplayStatus === "DANGER"
|
||||
? "bg-[#ff1c15] text-white"
|
||||
: "bg-[#e8f6f4] text-[#0f766e]"
|
||||
}`}
|
||||
>
|
||||
{buildWaterRiskStatusLabel(
|
||||
selectedWaterRiskResultRow.riskStatus,
|
||||
selectedWaterRiskDisplayStatus,
|
||||
)}
|
||||
</span>
|
||||
</div>
|
||||
<div className="bg-background px-[9px] py-[6px] text-[9px] text-muted-foreground">
|
||||
capacity 0.8 초과 관로 존재 시{" "}
|
||||
<span className="font-bold text-[#ff1c15]">위험</span>, 없으면{" "}
|
||||
<span className="font-bold text-[#1677ff]">정상</span>
|
||||
<div>
|
||||
GIS 매핑 관로 중 Capacity 0.8 이상이 1개라도 있으면{" "}
|
||||
<span className="font-bold text-[#ff1c15]">위험</span>, 없으면{" "}
|
||||
<span className="font-bold text-[#1677ff]">정상</span>
|
||||
</div>
|
||||
<div className="mt-[2px]">
|
||||
맨홀 침수유량은 지역 위험 판정에서 제외
|
||||
</div>
|
||||
</div>
|
||||
<table className="w-full table-fixed border-collapse border-t border-border">
|
||||
<colgroup>
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
- 분석기준시간 라벨·값이 현재 탭 행 오른쪽 끝에 표시되고 검색패널에서 제거된 것을 정적 확인했다.
|
||||
- 행 클릭 성공 안내문 제거와 오류 메시지 조건부 렌더링을 확인했다.
|
||||
- 보령 동대궁촌의 목록 최대 침수유량과 지도카드 값이 모두 `121.48m³/s`로 일치함을 실 API로 확인했다.
|
||||
- 지도카드 위험/정상 판정 설명과 `capacity > 0.8` 서비스 기준이 일치한다.
|
||||
- 지도카드 안내는 GIS 매핑 관로의 `Capacity >= 0.8`을 지역 위험 기준으로 표시하고, 맨홀 침수유량은 지역 위험 판정에서 제외됨을 명시한다.
|
||||
- 페이지별 데이터 길이·스크롤바에 따른 전체표 확대축소를 제거하고 `1320px` 고정폭·10개 열 비율·긴 행정명 말줄임 처리를 확인했다.
|
||||
- 팝업 컴포넌트에 `window.resizeTo` 호출이 없고 창 크기는 `popupDefinitions`의 `1380×900`으로만 결정되는 것을 정적 확인했다. 검색·결과영역의 overflow 숨김과 결과영역 좌우 여백 보정은 유지한다.
|
||||
|
||||
|
||||
@@ -216,7 +216,7 @@
|
||||
- 분석기준시간은 DB 결과와 독립된 현재 정시이므로 진행중 데이터가 없어도 사라지지 않는다. 입력창으로 오해하지 않도록 테두리·배경 없이 글씨만 표시한다.
|
||||
- `분석기준시간` 라벨과 시각은 현재 탭 행의 오른쪽 끝으로 이동하고 검색패널에는 중점관리지역 선택과 우측 조회 버튼만 유지한다.
|
||||
- 행 선택 성공 후 왼쪽 아래 안내문은 제거하고 오류 메시지만 조건부 표시한다.
|
||||
- 지도 요약카드에는 capacity 0.8 초과 관로 존재 여부가 위험/정상을 결정한다는 설명을 추가했다.
|
||||
- 지도 요약카드에는 GIS 매핑 관로 중 Capacity 0.8 이상이 1개라도 있으면 위험이며, 맨홀 침수유량은 지역 위험 판정에서 제외된다는 설명을 표시한다.
|
||||
- 결과표 `No.`를 `No`로 바꾸고 표 전체를 `1320px` 고정폭으로 지정한 뒤 `table-fixed`·`colgroup` 비율을 적용해 1·2페이지의 절대 열 너비를 동일하게 고정했다.
|
||||
- 공통 그리드 교체 후 검색영역과 결과영역의 가로·세로 overflow를 숨기고 결과영역 좌우 여백을 보정해 팝업 내부 스크롤바가 나타나지 않게 했다.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user