feat(b05): 좌측 폼 측점 범위 줄 사면안정군(C군)만 숨김 (177-5)
- syncRangeDisplay C군 거름 · hasComputedRange 그대로 · 699줄 그대로 - 새 시험 test_177_5_slope_range_hidden Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015sDZSjFvoiDjdGpgj3muc3
This commit is contained in:
@@ -154,9 +154,9 @@ export function createStructuresSection(
|
||||
}
|
||||
|
||||
/** 측점 범위 표시 갱신 — 시작 = 기준 − 전길이, 종료 = 시작 + 길이(2026-08-19
|
||||
* 사용자 지시: 전/후 분할, 후길이 = 길이 − 전길이 자동). 계산 불가면 "—". */
|
||||
* 사용자 지시: 전/후 분할, 후길이 = 길이 − 전길이 자동). 계산 불가면 "—" · 사면안정군(C)은 줄 숨김(177-5). */
|
||||
function syncRangeDisplay(): void {
|
||||
const computed = hasComputedRange(currentType());
|
||||
const computed = hasComputedRange(currentType()) && currentType()?.group !== "C";
|
||||
rangeWrap.hidden = !computed;
|
||||
if (!computed) return;
|
||||
const step = interval();
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""177-5 좌측 폼 「측점 범위」 줄 — 사면안정군(C군)만 숨김.
|
||||
|
||||
못박는 것
|
||||
- PNL5 `syncRangeDisplay` 가 C군이면 `rangeWrap.hidden` · 다른 구간형(B 소단배수로 · E 대피소 등)은 그대로.
|
||||
- `hasComputedRange` 자체는 그대로(시작 · 종료 칸 숨김에도 씀).
|
||||
- C군 = 사면안정 6종(정의 기준) · 그 밖 범위 종류는 C 가 아님.
|
||||
|
||||
화면은 사용자 확인.
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from B05_Profile.B05_Profile_Structures_Schema import load_structure_types
|
||||
|
||||
HERE = os.path.dirname(os.path.abspath(__file__))
|
||||
ROOT = os.path.abspath(os.path.join(HERE, "..", ".."))
|
||||
|
||||
|
||||
def _read(*parts: str) -> str:
|
||||
with open(os.path.join(ROOT, *parts), encoding="utf-8") as handle:
|
||||
return handle.read()
|
||||
|
||||
|
||||
def test_범위_줄은_C군만_숨김():
|
||||
panel = _read("B05_Profile", "B05_Profile_UI_Structures_Panel.ts")
|
||||
at = panel.index("function syncRangeDisplay(): void {")
|
||||
body = panel[at : panel.index("\n }", at)]
|
||||
assert (
|
||||
'const computed = hasComputedRange(currentType()) && currentType()?.group !== "C";' in body
|
||||
)
|
||||
assert "rangeWrap.hidden = !computed;" in body
|
||||
|
||||
|
||||
def test_hasComputedRange_는_그대로():
|
||||
types = _read("B05_Profile", "B05_Profile_UI_Structures_Panel_Types.ts")
|
||||
assert "export function hasComputedRange(" in types
|
||||
assert '"C"' not in types[types.index("export function hasComputedRange(") :][:600]
|
||||
|
||||
|
||||
def test_C군은_사면안정_6종_다른_범위_종류는_C_아님():
|
||||
groups = {t.type_id: t.group for t in load_structure_types()}
|
||||
slope = {
|
||||
"retaining_wall",
|
||||
"masonry_wet",
|
||||
"masonry_dry",
|
||||
"soil_guard",
|
||||
"boulder_masonry",
|
||||
"berm",
|
||||
}
|
||||
assert {k for k, g in groups.items() if g == "C"} == slope
|
||||
for kept in ("ditch_berm", "refuge", "work_yard", "guardrail"):
|
||||
assert groups.get(kept) not in (None, "C"), kept
|
||||
Reference in New Issue
Block a user