feat(393-3): B05 우측 「횡단」 · 「이전 횡단」 칸 = 그래프만 — 카드 머리 · 줌 단추 · 발 줄(암 경계 · 요약) · 판 아래 요약 줄 · 상자 테두리 걷음 · 그래프가 칸 폭 · 높이를 다 씀
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XWh5wNNycMkbwMpACz1rte
This commit is contained in:
@@ -133,7 +133,7 @@ function createPane(title: string, empty: string): CrossPane {
|
||||
let drawn: CrossPreviewResponse | null = null;
|
||||
let size = { width: 0, height: 0 };
|
||||
let zoom: ZoomPanState | undefined;
|
||||
/** B06 카드 재료(393-2) · 카드 머리 · 발 높이(그림 높이 = 판 − 이것) · 측점 간격. */
|
||||
/** B06 카드 재료(393-2) · 카드가 그림 밖에 더 쓰는 높이(그림 높이 = 판 − 이것) · 측점 간격. */
|
||||
let source: RouteCrossSource | null = null;
|
||||
let chrome = 0;
|
||||
let interval = 20;
|
||||
@@ -206,7 +206,7 @@ function createPane(title: string, empty: string): CrossPane {
|
||||
// 목록이 쓰는 그 규칙이다. 서버가 주는 `STA.0+100.000` 을 그대로 쓰면 표기가 갈린다.
|
||||
station.textContent = formatStation(preview.chainage_m, intervalM);
|
||||
draw(preview);
|
||||
foot.textContent = summarizeCross(preview);
|
||||
foot.textContent = source ? "" : summarizeCross(preview); // 카드 = 그래프만(393-3)
|
||||
},
|
||||
wait(text) {
|
||||
box.replaceChildren();
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
* · 자료 = 새 노선 상세(계산 묶음) · 없으면 받아 둔 저장 상세 · 노선 초안 중 새 상세가 아직 없으면 없음
|
||||
* (판은 옛 선 그림 `_Cross_Draw` 로 · 종단 임시 횡단 창도 그것 그대로)
|
||||
* · 단면 사본(station_id 앞머리 · design 사본) — B06 고름 · 줌 기억 · 면적 원본을 안 건드림
|
||||
* · 구조물 자리 · 암 경계 = 정본만 읽는 제어기(`Structure_Layouts` · 세월교 · 박스 조정값) · 누름 막음(줌 단추만)
|
||||
* · 구조물 자리 · 암 경계 = 정본만 읽는 제어기(`Structure_Layouts` · 세월교 · 박스 조정값) · 누름 막음
|
||||
* · 그래프만(393-3) — 카드 머리 · 줌 단추 · 발 줄 걷음 · 그래프가 판 칸을 다 씀
|
||||
* ========================================================================== */
|
||||
|
||||
import "../B06_Section/B06_Section_UI_Style_Cross_Controls.css";
|
||||
@@ -129,13 +130,10 @@ export function routeCrossCard(
|
||||
ford,
|
||||
box,
|
||||
);
|
||||
// 읽기 전용 — 벽 · 선 · 면적 고름을 막음(줌 단추만 통과)
|
||||
card.addEventListener(
|
||||
"click",
|
||||
(event) => {
|
||||
if (!(event.target as Element).closest("button")) event.stopPropagation();
|
||||
},
|
||||
true,
|
||||
);
|
||||
// 그래프만(393-3) — 카드 머리 · 줌 단추 · 발(암 경계 · 요약) 걷음 · 벽 · 선 · 면적 고름 막음
|
||||
card
|
||||
.querySelectorAll(":scope > header, :scope > footer, .b06-cross-card__zoom")
|
||||
.forEach((el) => el.remove());
|
||||
card.addEventListener("click", (event) => event.stopPropagation(), true);
|
||||
return card;
|
||||
}
|
||||
|
||||
@@ -254,7 +254,12 @@
|
||||
background: var(--color-surface);
|
||||
}
|
||||
|
||||
/* B06 횡단 카드 읽기 전용(393-2) — 판 상자가 테두리 · 고름 강조 · 손가락 없음. */
|
||||
/* B06 횡단 카드 읽기 전용(393-2) · 그래프만(393-3) — 테두리 · 고름 강조 · 손가락 없음 · 칸을 다 씀. */
|
||||
.b05-routeedit__cross-box:has(> .b06-cross-card) {
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.b05-routeedit__cross-box > .b06-cross-card {
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
@@ -262,8 +267,7 @@
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/* 발 줄 조정 단추(암 경계 등) = 읽기 전용이라 숨김 */
|
||||
.b05-routeedit__cross-box > .b06-cross-card > footer button {
|
||||
.b05-routeedit__cross-foot:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
@@ -104,3 +104,22 @@ def test_393_판_그림은_B06_카드_사본_노선_고치면_전후(results):
|
||||
def test_393_1_눈금이_연_판은_기억_안_함(results):
|
||||
assert results["planClick"]["panel"] == "cross"
|
||||
assert results["planClick"]["remember"] is False
|
||||
|
||||
|
||||
def test_393_3_판_칸은_그래프만():
|
||||
b05 = os.path.join(os.path.dirname(os.path.dirname(HERE)), "B05_Profile")
|
||||
|
||||
def read(name):
|
||||
with open(os.path.join(b05, name), encoding="utf-8") as file:
|
||||
return file.read()
|
||||
|
||||
card = read("B05_Profile_UI_RouteEdit_Cross_Card.ts")
|
||||
# 카드 머리(측점 · 알약) · 발(암 경계 · 요약) · 줌 단추 걷음 · 누름 전부 막음
|
||||
assert ':scope > header, :scope > footer, .b06-cross-card__zoom"' in card
|
||||
assert '"click", (event) => event.stopPropagation(), true' in card
|
||||
cross = read("B05_Profile_UI_RouteEdit_Cross.ts")
|
||||
assert 'foot.textContent = source ? "" : summarizeCross(preview);' in cross
|
||||
css = read("B05_Profile_UI_Style_RouteEdit.css")
|
||||
assert ".b05-routeedit__cross-box:has(> .b06-cross-card) {" in css
|
||||
assert ".b05-routeedit__cross-foot:empty {\n display: none;" in css
|
||||
assert "footer button" not in css
|
||||
|
||||
Reference in New Issue
Block a user