From 00b08bf152297274a81e50a142915023047ec780 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Mon, 28 Sep 2026 17:13:23 +0900 Subject: [PATCH] =?UTF-8?q?fix(M02):=20=EA=B5=AC=EC=A1=B0=EB=AC=BC=20?= =?UTF-8?q?=EB=8F=84=EB=A9=B4=EC=97=90=EC=84=9C=20=EC=9E=91=EB=8F=84=20?= =?UTF-8?q?=EC=98=81=EC=97=AD=20=EB=8B=A8=EC=B6=94=20=C2=B7=20=EC=9E=90?= =?UTF-8?q?=EB=A6=AC=ED=91=9C=20=ED=91=9C=EC=8B=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 구조물 도면(집계표 도면 정보 미리보기 · 도면 수정 편집)은 도각이 없어 작도 영역이 필요 없음 - 저장 문서의 작도 영역 값은 읽지도 쓰지도 않음 - 도면 양식(A1 · 표지 등) 편집은 그대로 Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_019qWfH6MMhLwjhtLYnDVUXv --- M02_MasterTemplete/M02_MasterTemplete_Drawing.ts | 13 ++++++++++--- M02_MasterTemplete/M02_MasterTemplete_Structure.ts | 1 + M02_MasterTemplete/M02_MasterTemplete_UI_Main.ts | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/M02_MasterTemplete/M02_MasterTemplete_Drawing.ts b/M02_MasterTemplete/M02_MasterTemplete_Drawing.ts index fa8e902cc..4896aa997 100644 --- a/M02_MasterTemplete/M02_MasterTemplete_Drawing.ts +++ b/M02_MasterTemplete/M02_MasterTemplete_Drawing.ts @@ -45,6 +45,8 @@ export interface DrawingTemplateOptions { preview?: boolean; /** 좌표 0,0 기준점 십자를 그린다 — 구조물 도면(편집 · 미리보기)만. */ originMarker?: boolean; + /** 구조물 도면 — 도각이 없으므로 작도 영역 단추 · 자리표(도각 자리) 표시를 없애고, 문서의 작도 영역 값은 무시. */ + noArea?: boolean; } const RECOVERY_PREFIX = "OPEN_WEB_CAD__RECOVERY__"; @@ -107,6 +109,7 @@ export function mountDrawingTemplate( options: DrawingTemplateOptions = {}, ): DrawingTemplateHandle { const readOnly = options.readOnly === true; + const noArea = options.noArea === true; const recoveryScope = recoveryScopeOf(options); migrateOldRecovery(options, recoveryScope); let base: DrawingTemplateDoc = doc; @@ -193,7 +196,7 @@ export function mountDrawingTemplate( cad.load( drawing, null, - !readOnly, + !readOnly && !noArea, {}, { recoveryScope, @@ -245,6 +248,10 @@ export function mountDrawingTemplate( const getDoc = async (): Promise => { const { drawing } = await cad.requestSave(); + if (noArea) { + base = { ...base, ...drawing }; + return base; + } const drawingArea = readArea(); if (!drawingArea) throw new Error("작도 영역 값이 올바르지 않습니다."); base = { ...base, ...drawing, drawing_area: drawingArea }; @@ -252,12 +259,12 @@ export function mountDrawingTemplate( }; // 한 줄 — 페이지가 머리 칸(headerSlot)을 주면 거기, 아니면 그림 칸 위에 작게. - toolbar.append(areaButton, actions); + toolbar.append(...(noArea ? [] : [areaButton]), actions); if (options.headerSlot) { toolbar.classList.add("m02-drawing__toolbar--slot"); options.headerSlot.append(toolbar); root.append(cad.element); - } else root.append(toolbar, cad.element); + } else root.append(...(noArea && readOnly ? [] : [toolbar]), cad.element); container.append(root); load(doc); diff --git a/M02_MasterTemplete/M02_MasterTemplete_Structure.ts b/M02_MasterTemplete/M02_MasterTemplete_Structure.ts index 82e22ff24..b95e356cd 100644 --- a/M02_MasterTemplete/M02_MasterTemplete_Structure.ts +++ b/M02_MasterTemplete/M02_MasterTemplete_Structure.ts @@ -379,6 +379,7 @@ export function createStructurePanel(opts: StructurePanelOptions): StructurePane panelsCollapsed: true, // 특성 · 도면층 패널은 접힌 채 — › 를 누르면 펼침 preview: true, // 왼쪽 끌기 = 화면 옮기기 · 두 번 누름 = 전체 맞춤 originMarker: true, // 좌표 0,0 기준점 십자 + noArea: true, // 구조물도는 도각이 없음 — 작도 영역 단추 없음 }); const frame = previewHost.querySelector("iframe"); if (frame) hideToolbar(frame); diff --git a/M02_MasterTemplete/M02_MasterTemplete_UI_Main.ts b/M02_MasterTemplete/M02_MasterTemplete_UI_Main.ts index 8f1572150..2ac3160b2 100644 --- a/M02_MasterTemplete/M02_MasterTemplete_UI_Main.ts +++ b/M02_MasterTemplete/M02_MasterTemplete_UI_Main.ts @@ -236,6 +236,7 @@ export function createMain(isAdmin: boolean, onSaved?: () => void): MainHandle { onChanged: (d: boolean) => (dirty = d && !readOnly), headerSlot: slot, originMarker: at.kind === "structure", + noArea: at.kind === "structure", }); return; }