feat(497-1 B07 단추 줄): 좌측 아래 [?] [<] [>] [저장] [초기화] · [도각 편집] = 윗줄
- [저장] = 이동 없이 고친 탭(●) + 지금 탭 저장 · 고친 것 없으면 요청 0 · 저장 뒤 단계 색 다시 읽음 - [초기화] = danger-ghost · 맨 오른쪽 · 물음 → 오버레이 → POST design-drawings/reset → CAD 자동백업(도면마다) 지움 → 다시 읽음 - [>] = 지금 길 그대로(고친 것 없으면 저장 요청 없이 이동) - 새 시험 test_298_2_b07_buttons · test_280_5_b07_settings 줄 자리 고쳐 씀 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,8 @@
|
||||
* 고친 탭(●) + 지금 탭을 `confirm` 길로 · 안 고친 도면은 보내지 않음(늘 원본에서 새로 그림).
|
||||
* 잠금 없음 — 저장본도 그대로 고침 · 다시 옮길 때 다시 저장.
|
||||
* 원본 되돌림 = ⚙ 모달 [원본에서 다시 그리기] — 저장본이면 `invalidate` · 고친 것 버리고 다시 실음.
|
||||
* 좌측 [저장](298-2) = 이동 없이 같은 저장 · [초기화] = 물음 → `reset`(저장본 풂 · 설정 지움) →
|
||||
* CAD 자동백업 지움 → 페이지 다시 읽음(기준 = 지금 앞 단계로 그린 원본).
|
||||
* ========================================================================== */
|
||||
|
||||
import {
|
||||
@@ -19,6 +21,7 @@ import type { CadTabs } from "@ui/cad_host/cad_host_tabs";
|
||||
import {
|
||||
confirmDesignDrawing,
|
||||
invalidateDesignDrawing,
|
||||
resetDesignDrawings,
|
||||
type CadDrawing,
|
||||
type DesignDrawingItem,
|
||||
type QuantityTable,
|
||||
@@ -145,3 +148,48 @@ export async function redrawFromSource(store: DrawingStore): Promise<boolean> {
|
||||
hideLoadingOverlay();
|
||||
}
|
||||
}
|
||||
|
||||
/** 좌측 [저장](298-2) — 이동 없이 고친 탭 저장 · 저장했으면 `onSaved`(단계 색 다시 읽음). */
|
||||
export async function saveDrawingsNow(store: DrawingStore, onSaved: () => void): Promise<void> {
|
||||
if (!store.cadDirty() && !store.tabs.anyDirty()) {
|
||||
showToast("고친 도면이 없습니다.", "info");
|
||||
return;
|
||||
}
|
||||
if (!(await saveEditedDrawings(store))) return;
|
||||
showToast("저장했습니다.", "success");
|
||||
onSaved();
|
||||
}
|
||||
|
||||
/** CAD 자동백업 칸(`openwebcad/src/helpers/autosave.ts`) — 칸 이름 = 도면 id. */
|
||||
const CAD_RECOVERY_KEY = "OPEN_WEB_CAD__RECOVERY";
|
||||
|
||||
/**
|
||||
* 좌측 [초기화](298-2 · 300 C1 · C3) — 물은 뒤 서버가 저장본을 풀고 설정을 지움 → 고친 것 · CAD 자동백업 버림 →
|
||||
* 페이지 다시 읽음(다음 GET 이 지금 앞 단계 저장본으로 원본을 그림). [취소] = 그대로.
|
||||
*/
|
||||
export async function resetDrawings(store: DrawingStore): Promise<void> {
|
||||
if (store.isFrameEditing()) {
|
||||
showToast("도각 편집을 마친 뒤 초기화하세요.", "warning");
|
||||
return;
|
||||
}
|
||||
const ok = await showConfirmDialog(
|
||||
"이 페이지에서 저장한 도면 · 고친 것 · 설정(축척 · 횡단 배치 · 평면도 종류 · 표식)을 모두 지우고 " +
|
||||
"지금 앞 단계 값으로 다시 그릴까요?",
|
||||
"초기화",
|
||||
);
|
||||
if (!ok) return;
|
||||
showLoadingOverlay();
|
||||
try {
|
||||
await resetDesignDrawings(store.projectId);
|
||||
store.drawings.forEach((item) => localStorage.removeItem(`${CAD_RECOVERY_KEY}__${item.id}`));
|
||||
showToast("초기화했습니다.", "success");
|
||||
location.reload();
|
||||
} catch (error) {
|
||||
showToast(
|
||||
error instanceof Error ? error.message : "상세 설계를 초기화하지 못했습니다.",
|
||||
"error",
|
||||
);
|
||||
} finally {
|
||||
hideLoadingOverlay();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user