Files
Aislo/resources/tester/test_212_3_b07_cross_layout_buttons.py
T
eomsangdonandClaude Opus 5.5 659baa7751 feat(484 B07 설정): 좌측 ⚙ 설정 모달 · [현재 도면 확정] · [수정] 지움 · 저장 후 이동(481-3) · 탭 줄 겹판 자리
- 공용 createPanelCard 곁값 onSettings — 캐럿 왼쪽 ⚙ · 누름이 접힘 안 일으킴(B08 · B09 그대로)
- 평면도 ⚙ = 평면도 관리 모달([평면도 관리] 단추 지움) · 횡단도 ⚙ = 배치 칸 · 표 배율 · 안내선(카드 밑 칸 지움) · 구조물 ⚙ = 「M02 그림 — 축척 없음」 · 종단 1장 · 토적 = 단추 안 ⚙ · 표지 없음
- ⚙ 머리 [원본에서 다시 그리기] — 그 묶음 도면을 연 때만 · 저장본이면 invalidate
- 잠금 없음(요구 281) — 읽기 전용 안 묶음 · 자동 B08 이동 · 「모든 횡단 확정」 잠금 지움
- onStepClick 한 길 = 고친 탭(●) + 지금 탭 저장 → B08 · B09 면 단계 4 완료(새 POST design-drawings-complete) → 이동 · 실패 = 머묾
- 저장 · 원본 묶음 = 새 B07_DesignDetail_UI_Save.ts · 모달 = 새 B07_DesignDetail_UI_Settings.ts(UI_Page 633 → 543줄)
- 탭 줄 = .cad-host 의 --cad-tab-slot-left/right(px · CSS left · right 꼴) 있으면 리본 빈 자리에 겹침 · 없으면 지금 자리
- 시험: 새 test_280_5_b07_settings · 130 · 153-1 · 180-3 · 212-3 · 269 · 311 고쳐 씀

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 22:13:04 +09:00

77 lines
3.7 KiB
Python

# -*- coding: utf-8 -*-
"""212-3 B07 좌측 「횡단도」 배치 칸 — 단추 · 숫자 칸 한 규격 · 한 줄에 한 일 · 남는 검은 선 판정.
못박는 것
- 줄 = 「배치 열 · 행」 · 「[이 장] [모든 장]」 · 「표 배율 [배율 적용]」
· [안내선 숨기기](부르는 쪽).
- 단추 · 숫자 칸 · 이름 = 좌측 패널 공용 양식(269 `.ui-panel-form`) · 한 줄 안 같은 너비.
- 옛 한 줄 감기(flex-wrap) · 숫자 칸 48px 고정 없음.
- [안내선 숨기기] 뒤 남는 검은 선 = 인쇄 칸선(도각 층 도면 개체 · 회청 `#8ea0b5`
· 밝은 바탕에서 짙게 그려짐) — 안내선(겹판)과 다른 것이라 지우지 않음 · 단추는 겹판만 끔.
"""
import re
from pathlib import Path
from B07_DesignDetail.B07_DesignDetail_Engine_Cad import FRAME_LAYER_ID, TABLE_LINE_COLOR
from B07_DesignDetail.B07_DesignDetail_Engine_Cad_Sheet import _grid_lines
from B07_DesignDetail.B07_DesignDetail_Engine_Template import use_project_templates
ROOT = Path(__file__).resolve().parents[2]
CSS = (ROOT / "B07_DesignDetail/B07_DesignDetail_UI_Style.css").read_text(encoding="utf-8")
PANELS = (ROOT / "B07_DesignDetail/B07_DesignDetail_UI_Panels.ts").read_text(encoding="utf-8")
SETTINGS = (ROOT / "B07_DesignDetail/B07_DesignDetail_UI_Settings.ts").read_text(encoding="utf-8")
GUIDE = (ROOT / "B07_DesignDetail/openwebcad/src/integration/guide-area.ts").read_text(
encoding="utf-8"
)
THEME = (ROOT / "ui_template/ui_template_theme.css").read_text(encoding="utf-8")
def _block(selector: str) -> str:
m = re.search(r"(?:^|\n)" + re.escape(selector) + r"\s*\{([^}]*)\}", CSS)
assert m, selector
return m.group(1)
def _decl(block: str, prop: str) -> str:
m = re.search(r"(?:^|;|\s)" + re.escape(prop) + r"\s*:\s*([^;]+);", block)
assert m, prop
return m.group(1).strip()
def test_단추_숫자_칸_한_규격_토큰():
# 269 — 크기는 좌측 패널 공용 양식(`.ui-panel-form`)이 줌 · B07 덧칠(줄 위 작은 단추 토큰) 없음
assert ".b07-cross-layout .ui-btn" not in CSS
assert ".b07-cross-layout .ui-field .ui-input {" in CSS # 폭만
assert "height" not in _block(".b07-cross-layout .ui-field .ui-input")
label = _block(".b07-cross-layout .ui-field__label")
assert "font-size" not in label
assert "createPanelCard(" in PANELS # 배치 칸이 사는 횡단도 묶음 = 공용 카드
def test_한_줄에_한_일_같은_너비():
box = _block(".b07-cross-layout")
assert _decl(box, "flex-direction") == "column"
assert "flex-wrap" not in box
assert _decl(_block(".b07-cross-layout__row > *"), "flex") == "1 1 0"
assert "width: 48px" not in CSS
assert 'line.className = "b07-cross-layout__row"' in PANELS
assert "row(cols.root, rows.root)" in PANELS
assert re.search(r"row\(\s*action\(\"이 장\"[^;]*action\(\"모든 장\"", PANELS, re.S)
assert "box.append(row(scale.root, button));" in PANELS
# 안내선 단추 = 배치 칸 맨 아래 한 줄(전체 폭) · ⚙ 횡단 모달(280-5)
assert "controls.append(deps.cross.guideToggle);" in SETTINGS
def test_남는_검은_선은_인쇄_칸선_지우지_않음():
use_project_templates(None)
lines = _grid_lines("cross_s00000m", 4, 4)
assert len(lines) == 10 # 세로 5 · 가로 5 그대로
assert all(e["layerId"] == FRAME_LAYER_ID for e in lines)
assert all(e["lineColor"] == TABLE_LINE_COLOR == "#8ea0b5" for e in lines)
# 안내선 단추는 겹판(점선 영역 + 붉은 틀)만 — 도면 개체를 안 건드림
draw = GUIDE[GUIDE.index("export function drawGuide") :]
draw = draw[: draw.index("\n}\n")]
assert "if (!guide || !guideVisible) return;" in draw
assert "getEntities" not in draw and "setEntities" not in draw