diff --git a/B08_Quantity/B08_Quantity_UI_EarthworkGrid.ts b/B08_Quantity/B08_Quantity_UI_EarthworkGrid.ts index 76aec807..02431449 100644 --- a/B08_Quantity/B08_Quantity_UI_EarthworkGrid.ts +++ b/B08_Quantity/B08_Quantity_UI_EarthworkGrid.ts @@ -309,20 +309,37 @@ function buildFoot(totals: Record, slope?: SlopeTable): HTMLTabl return foot; } -/** 잘린 측점 경고 — 무엇이 잘렸는지 적고, 측점을 눌러 그 줄로 가게 한다. */ +/** 잘린 측점 안내 — 한 덩어리로 묶고, 목록은 접어 둔다. + * + * 왜 붉은 오류가 아닌가 + * 실측 발생률이 21~26 %(랩탑 route 169 는 22/105, 이 노선은 17/65)라 **늘 뜨는 안내**다. + * 매번 요란하면 곧 무시당한다. 그래서 **주의 표시 + 접히는 목록**으로 둔다. + * + * 왜 한 덩어리인가 + * 절·성토 면적 · 사면적 · 사면길이가 **전부 같은 사유로** 잘린다. 항목마다 따로 띄우면 + * 사용자가 세 번 읽게 된다. + * + * 왜 안 넓히나 (B06 담당 확인, 2026-09-07) + * 미교차의 절반 이상이 계곡·절벽처럼 **지형이 설계 사면에서 멀어지는 자리**라 반폭을 + * 늘려도 영원히 안 닫힌다. 닫히는 쪽도 중앙값 +3m 인데 꼬리가 +292m 이라 전역 확대는 + * 값이 안 나온다. 그래서 경고로 대체한다(2026-09-03 사용자 확정). + */ function buildUnclosedNotice(slope: SlopeTable, table: HTMLTableElement): HTMLElement | null { const stations = slope.unclosed_stations ?? []; if (!stations.length) return null; - const box = document.createElement("div"); + const box = document.createElement("details"); box.className = "b08-grid__warning"; - const text = document.createElement("span"); - text.textContent = - `사면이 원지반을 만나지 못해 ${stations.length}개 측점에서 ` + - "사면길이·면적이 그 지점에서 잘렸습니다. 실제 값은 이보다 큽니다. " + - "같은 사유로 절·성토 면적도 잘려 있습니다."; - box.append(text); + const summary = document.createElement("summary"); + summary.className = "b08-grid__warning-summary"; + summary.textContent = + `주의 — ${stations.length}개 측점에서 사면이 원지반을 만나지 못했습니다. ` + + "그 측점의 절·성토 면적 · 사면길이 · 사면적이 함께 잘려 있어 실제보다 작습니다."; + box.append(summary); + + const list = document.createElement("div"); + list.className = "b08-grid__warning-list"; for (const chainage of stations) { const link = document.createElement("button"); link.type = "button"; @@ -336,8 +353,9 @@ function buildUnclosedNotice(slope: SlopeTable, table: HTMLTableElement): HTMLEl row?.classList.add("is-highlighted"); window.setTimeout(() => row?.classList.remove("is-highlighted"), 1600); }); - box.append(link); + list.append(link); } + box.append(list); return box; } diff --git a/B08_Quantity/B08_Quantity_UI_EarthworkGrid_Style.ts b/B08_Quantity/B08_Quantity_UI_EarthworkGrid_Style.ts index ca3e4ee3..2b629acc 100644 --- a/B08_Quantity/B08_Quantity_UI_EarthworkGrid_Style.ts +++ b/B08_Quantity/B08_Quantity_UI_EarthworkGrid_Style.ts @@ -63,17 +63,23 @@ const CSS = ` font-weight: var(--font-weight-medium, 600); } -/* 잘린 측점 경고 — 조용히 적게 내지 않고 눈에 보이게 한다(PLAN 8-4b). */ +/* 잘린 측점 안내 — 발생률이 21~26 % 로 늘 뜨는 것이라 붉은 오류가 아니라 **주의**로 둔다. + 요란하면 곧 무시당한다. 목록은 접어 두고 필요할 때만 편다. */ .b08-grid__warning { - display: flex; - flex-wrap: wrap; - align-items: center; - gap: 4px 6px; padding: 6px 10px; font-size: 12px; color: var(--color-text-body); background: var(--color-surface-raised); - border-left: 3px solid var(--color-danger); + border-left: 3px solid var(--color-text-muted); +} + +.b08-grid__warning-summary { cursor: pointer; } + +.b08-grid__warning-list { + display: flex; + flex-wrap: wrap; + gap: 4px 6px; + padding-top: 6px; } .b08-grid__warning-station { @@ -86,9 +92,9 @@ const CSS = ` font-variant-numeric: tabular-nums; } -/* 잘린 줄은 표에서도 알아보게 왼쪽에 표시를 남긴다. */ +/* 잘린 줄은 표에서도 알아보게 왼쪽에 표시를 남긴다 — 눈에 띄되 요란하지 않게. */ .b08-grid__table tbody tr.is-unclosed .b08-grid__station { - border-left: 3px solid var(--color-danger); + border-left: 3px solid var(--color-text-muted); } .b08-grid__table tbody tr.is-highlighted td {