fix(M02): 도면 칸 CAD 💾 · Ctrl+S 가 페이지 [저장] 을 부름 · 엉터리 도각 파일은 400 · 자리표 패널 접기 단추 (PLAN 10-3)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PxvYb5ufV1kWdBvZbpDfu6
This commit is contained in:
@@ -24,7 +24,7 @@ export interface DrawingTemplateDoc extends CadHostDrawing {
|
||||
}
|
||||
|
||||
export interface DrawingTemplateOptions {
|
||||
/** 쓰지 않음 — 저장은 페이지 머리 [저장] 한 곳(`getDoc()` 으로 편집본을 가져감 · 판 · 409 흐름). */
|
||||
/** CAD 안 💾 · Ctrl+S 가 부른다 — 페이지 머리 [저장] 과 같은 일(판 · 409 흐름)을 하게 페이지가 넘긴다. */
|
||||
onSave?: (doc: DrawingTemplateDoc) => void | Promise<void>;
|
||||
/** 보기 전용 — CAD 그리기·수정 · 작도 영역 · 불러오기가 막힌다. */
|
||||
readOnly?: boolean;
|
||||
@@ -167,7 +167,21 @@ export function mountDrawingTemplate(
|
||||
showToast(error instanceof Error ? error.message : "자리표 목록을 받지 못했습니다.", "error"),
|
||||
);
|
||||
|
||||
const cad = createCadHost<DrawingTemplateDoc>({ title: "도면 양식" });
|
||||
// CAD 안 💾 · Ctrl+S — 양식 파일은 페이지 [저장] 만 쓴다. 저장 중 또 눌러도 한 번만 부른다.
|
||||
let saving = false;
|
||||
const hostSave = (): void => {
|
||||
if (readOnly) return void showToast("이 양식은 볼 수만 있습니다.", "info");
|
||||
if (saving || !options.onSave) return;
|
||||
saving = true;
|
||||
getDoc()
|
||||
.then((next) => options.onSave?.(next))
|
||||
.catch((error) =>
|
||||
showToast(error instanceof Error ? error.message : "양식을 저장하지 못했습니다.", "error"),
|
||||
)
|
||||
.finally(() => (saving = false));
|
||||
};
|
||||
|
||||
const cad = createCadHost<DrawingTemplateDoc>({ title: "도면 양식", onHostSave: hostSave });
|
||||
const load = (drawing: DrawingTemplateDoc): void => {
|
||||
cad.beginLoading();
|
||||
cad.load(
|
||||
@@ -175,7 +189,7 @@ export function mountDrawingTemplate(
|
||||
null,
|
||||
!readOnly,
|
||||
{},
|
||||
{ recoveryScope, readOnly, hostTitle: "도면 양식 편집" },
|
||||
{ recoveryScope, readOnly, hostTitle: "도면 양식 편집", hostSave: true },
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user