fix(B08): 잘림 안내를 「주의 + 접히는 목록」으로 — 늘 뜨는 경고라
B06 담당(랩탑) 실측 회신 반영. 미교차는 드문 예외가 아니라 상시임 —
route 169 는 22/105(21 %), 이 노선은 17/65(26 %). 매번 요란하면 곧 무시당함.
고친 것 셋
· 붉은 오류 → **주의 표시**(테두리를 danger 에서 muted 로). 잘린 줄 표시도 같게.
· 목록을 `details` 로 **접어 둠**. 필요할 때만 폄.
· 문구를 **한 덩어리**로 묶음 — 절·성토 면적 · 사면길이 · 사면적이 전부 같은 사유로
잘리므로 항목마다 따로 띄우지 않음.
안 넓히는 까닭 (주석에 남김)
미교차 절반 이상이 계곡·절벽처럼 지형이 설계 사면에서 멀어지는 자리라 반폭을 늘려도
영원히 안 닫힘. 닫히는 쪽도 중앙값 +3m 인데 꼬리가 +292m 이라 전역 확대는 값이 안 남.
2026-09-03 사용자 확정 「경고로 대체」가 그대로 유효함.
정본 키 대조 — StationSlope.unclosed 가 design.slope_unclosed 에서 나오는 것 확인
(B06_Section_Engine_Design.py:807 이 내는 그 값).
검증 — 공용 브라우저 실화면. 타입검사 오류 0.
접힌 상태 `details[open=false]` · 요약 문구 한 줄 · 측점 단추 17개.
펴면 목록이 보이고, 첫 단추(NO.13)를 누르면 그 줄로 가서 강조됨.
조작한 화면은 사용자가 보던 주소로 되돌려 놓음.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -309,20 +309,37 @@ function buildFoot(totals: Record<string, number>, 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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user