feat(m02): 카드 · 면적 도면 패널 미리보기 탭 고르기 · 카드 저장 문서 전체(105-3)
- 카드 도면 미리보기 = mountStructureSheets(공용 탭 줄 · pickTabs 고르기만) · 「장 n」 배지 지움 - 카드 저장 = getDoc() 모든 장 — 2장 보다 Ctrl+S 해도 1장 그대로 - 면적 상세 오른쪽 도면 패널도 탭(고르기만 · 보내기는 지금 장) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015KYZ2HWWdUwZWYnn3tQz7X
This commit is contained in:
@@ -243,10 +243,9 @@ def test_안_실린_장_표도_갈음(got):
|
||||
assert got["m02"]["t2"] == "새"
|
||||
|
||||
|
||||
def test_카드는_1장_그리고_장_수():
|
||||
def test_카드는_탭_고르기만():
|
||||
card = (ROOT / "M02_MasterTemplete/M02_MasterTemplete_DrawingCard.ts").read_text("utf-8")
|
||||
assert "const sheets = 1 + (doc.더한장?.length ?? 0);" in card
|
||||
assert "badge.textContent = `장 ${sheets}`;" in card
|
||||
assert "mountStructureSheets(host, sheets, {" in card and "pickTabs: true," in card # 105-3
|
||||
main = (ROOT / "M02_MasterTemplete/M02_MasterTemplete_UI_Main.ts").read_text("utf-8")
|
||||
assert '"mountStructureSheets"' in main
|
||||
assert '...(edited as Pick<StructureDoc, "도면" | "더한장">),' in main
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
코드 글 모양으로 봄(CAD 는 iframe · 화면 검증은 ORCA).
|
||||
- 고치기 = 층 고칠 권한 + 자료 자리의 저장 길(`write`) 둘 다 · 아니면 예전처럼 보기만.
|
||||
- 고칠 때 CAD 메뉴(제목줄 · 리본 · 패널 · 상태줄)는 숨김 · CAD 앱은 안 고침(같은 출처 스타일).
|
||||
- 저장 = 전체 편집기와 같은 길(`saveTemplate`) · 읽은 문서에 `도면` 만 갈아 끼움 · Ctrl+S 도 같음.
|
||||
- 저장 = 전체 편집기와 같은 길(`saveTemplate`) · 읽은 문서에 `도면` · `더한장`(모든 장)을 갈아 끼움 ·
|
||||
Ctrl+S 도 같음 — 지금 탭 장을 안 받음(2장 보다 저장해도 1장 그대로 · 105-3).
|
||||
- 여러 장 = 공용 탭 줄 고르기만(`mountStructureSheets` · `pickTabs`) · 「장 n」 배지 없음.
|
||||
- 저장 안 한 카드 고침 = 다른 항목 열기 · 페이지 떠나기 때 물음.
|
||||
"""
|
||||
|
||||
@@ -23,9 +25,8 @@ def test_고치기는_권한과_저장_길_둘_다():
|
||||
assert "editable && !!source.write;" in card
|
||||
assert "readOnly: !edit," in card and "preview: !edit," in card
|
||||
assert (
|
||||
"onSave: (drawing: DrawingTemplateDoc) => void opt.saver.run(() => doSave(drawing)),"
|
||||
in card
|
||||
) # CAD Ctrl+S = 카드 저장
|
||||
"onSave: () => void opt.saver.run(() => doSave())," in card
|
||||
) # CAD Ctrl+S = 카드 저장(문서 전체)
|
||||
source = _text("M02_MasterTemplete_ItemSource.ts")
|
||||
assert (
|
||||
"write: (part, column, 판, 문서) => saveTemplate(layer, part, column, null, 판, 문서)"
|
||||
@@ -33,11 +34,16 @@ def test_고치기는_권한과_저장_길_둘_다():
|
||||
)
|
||||
|
||||
|
||||
def test_메뉴는_숨기고_저장은_도면_칸만():
|
||||
def test_메뉴는_숨기고_저장은_문서_전체():
|
||||
card = _text("M02_MasterTemplete_DrawingCard.ts")
|
||||
for part in (".cad-titlebar", ".cad-ribbon", ".cad-inspector", ".cad-statusbar"):
|
||||
assert part in card.split("const HIDE_EDIT")[1].split(";\n")[0]
|
||||
assert "const next = { ...doc, 도면:" in card # 도번 · 열 · 판 은 읽은 그대로
|
||||
# 도번 · 열 · 판 은 읽은 그대로 · 모든 장(지금 탭 하나가 1장을 덮던 흠 · 105-3)
|
||||
assert (
|
||||
'const next = { ...doc, ...((await handle.getDoc()) as Pick<StructureDoc, "도면" | "더한장">) };'
|
||||
in card
|
||||
)
|
||||
assert "async function doSave(): Promise<void>" in card
|
||||
assert 'write("structure", opt.column, version, next)' in card
|
||||
for key in ("L · PL", "E · Delete", "Ctrl+Z · Ctrl+Y", "Ctrl+S"):
|
||||
assert f'["{key}"' in card # ? 도움말 — 전체 편집기 명령 별칭과 같은 것
|
||||
@@ -46,10 +52,30 @@ def test_메뉴는_숨기고_저장은_도면_칸만():
|
||||
def test_저장_안_한_카드_고침은_물음():
|
||||
cards = _text("M02_MasterTemplete_ItemCards.ts")
|
||||
# 물음 한 번(31-7) — 어느 카드든(도면 · 엑셀) 고침이 있으면 · 틀의 저장 표시(saver)로 봄
|
||||
assert "(await leaveOrStay(TEXT.discard, { save: saveAll, stillDirty: anyDirty })) === \"stay\"" in cards
|
||||
assert (
|
||||
'(await leaveOrStay(TEXT.discard, { save: saveAll, stillDirty: anyDirty })) === "stay"'
|
||||
in cards
|
||||
)
|
||||
assert "const anyDirty = (): boolean => cards.some((c) => c.saver.dirty());" in cards
|
||||
assert "dirty: anyDirty," in cards
|
||||
assert "dirty: () => cards.dirty()," in _text("M02_MasterTemplete_Structure.ts")
|
||||
main = _text("M02_MasterTemplete_UI_Main.ts")
|
||||
assert "const busy = (): boolean => dirty || !!panel?.dirty() || toDrawing.waiting();" in main
|
||||
assert main.count("!busy()") >= 2 # 떠날 때 물음 · 창 닫기 막음
|
||||
|
||||
|
||||
def test_카드_미리보기는_탭_고르기만():
|
||||
card = _text("M02_MasterTemplete_DrawingCard.ts")
|
||||
assert "const handle = mountStructureSheets(host, sheets, {" in card
|
||||
assert "pickTabs: true," in card
|
||||
assert "m02-drawing__sheets" not in card # 「장 n」 배지 지움
|
||||
panel = _text("M02_MasterTemplete_AreaDrawing.ts") # 면적 도면 패널도 탭(고르기만)
|
||||
assert "view = mountStructureSheets(stage, sheets, {" in panel and "pickTabs: true," in panel
|
||||
drawing = _text("M02_MasterTemplete_Drawing.ts")
|
||||
assert (
|
||||
"readOnly || options.pickTabs ? {} : { add: true, rename: true, remove: true, reorder: true },"
|
||||
in drawing
|
||||
)
|
||||
assert (
|
||||
"if ((readOnly || options.pickTabs) && !more.length) tabs.element.hidden = true;" in drawing
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user