feat(b09): 설계내역서 자유 편집 화면 — 모든 줄 우클릭 메뉴 · 자동 줄 칸 덮개 · gone · 위로 · 아래로 · 새 공종 · 자동값으로 · 고친 칸 강조 · 내역 초기화 · 연결 고르기 창 떼어 냄(184-3)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SE9MxeXTu2uaDZ55BJowAY
This commit is contained in:
2026-10-10 13:00:34 +09:00
co-authored by Claude Opus 5.5
parent 9483c19ad3
commit 5e86f705a3
6 changed files with 720 additions and 314 deletions
+17 -1
View File
@@ -15,6 +15,7 @@ import { createWorkflowLayout } from "@ui/ui_template_workflow_layout";
import {
createButton,
hideLoadingOverlay,
showConfirmDialog,
showLoadingOverlay,
showToast,
} from "@ui/ui_template_elements";
@@ -297,6 +298,21 @@ export function renderB09Estimation(root: HTMLElement): void {
void run("/estimation/prices", "POST", "단가를 지금 M01 값으로 새로 굳혔습니다."),
});
refresh.dataset.b09Refresh = "";
// 184-3 내역 초기화 — 설계내역서 덮개(user.bill) 지우고 바로 저장 → 기본 로직 내역
const reset = createButton({
label: "내역 초기화",
variant: "ghost",
onClick: () =>
void showConfirmDialog(
"설계내역서에서 고친 칸 · 더한 줄 · 지운 줄 · 차례를 모두 지우고 기본 로직 내역으로 되돌립니다. 바로 저장됩니다.",
"초기화",
).then((ok) => {
if (!ok) return;
const { bill: _bill, ...rest } = user;
void run("/estimation", "PUT", "설계내역서를 초기값으로 되돌렸습니다.", { user: rest });
}),
});
reset.dataset.b09BillReset = "";
const section = document.createElement("section");
section.className = "ui-collapsible ui-sidebar-section ui-sidebar-card";
const heading = document.createElement("h3");
@@ -305,7 +321,7 @@ export function renderB09Estimation(root: HTMLElement): void {
section.append(heading, made, refresh);
const actions = document.createElement("div");
actions.className = "ui-sidebar-actions";
actions.append(save);
actions.append(save, reset);
const left = document.createElement("div");
left.className = "ui-sidebar-panel b09-options";
left.append(section, actions);