feat(M02): 표 도구 막대 줄 더하기 · 줄 지우기 · 손 입력 열 뺌 · 상세 화면 돌아가기

- 표 부품 도구 막대에서 세 단추를 빼고 쓰이지 않게 된 addRow · deleteRow · canDeleteRow · 글자 정리(데이터 규칙 · 시험 견본은 그대로)
- 구조물 도면 · 면적산출 · 재료산출 상세 화면 제목 오른쪽 [돌아가기] — 구조물집계표로 돌아가 그 열을 고른 채(카드 셋) · 저장 안 한 고침은 떠나기 확인 창
- 표 부품 손잡이 selectColumn

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EUypcnp5d1gU2aeKh9F2H7
This commit is contained in:
2026-09-29 08:41:02 +09:00
co-authored by Claude Opus 5.5
parent 7cac596afb
commit afcb59d11b
6 changed files with 39 additions and 65 deletions
@@ -53,6 +53,7 @@ interface EditorHandle {
interface SheetEditorHandle extends EditorHandle {
getDoc: () => { 열: StructureColumn[] };
recalc: () => void;
selectColumn: (colId: string) => void;
}
type Mods = Record<string, () => Promise<unknown>>;
@@ -104,6 +105,8 @@ export function createMain(
const title = el("h2", { className: "m02-main__title", text: L("M02_PickTemplate") });
const reload = createButton({ label: L("M02_Reload"), variant: "ghost" });
const save = createButton({ label: L("M02_Save"), variant: "filled" });
// 구조물 도면 · 면적산출 · 재료산출 상세 화면 → 구조물집계표(그 열 고른 채)
const back = createButton({ label: L("M02_Back"), variant: "ghost", size: "sm" });
const slot = el("div", { className: "m02-main__slot" }); // 도면 양식의 작도 영역 칸이 들어옴
const notice = el("div", { className: "m02-main__notice", attrs: { hidden: "" } });
const comboSlot = el("div", { className: "m02-main__combo" }); // 면적산출 — 알약 막대 위 조합 줄
@@ -112,7 +115,7 @@ export function createMain(
const root = el("div", {
className: "m02-main",
children: [
el("div", { className: "m02-main__head", children: [title, slot, reload, save] }),
el("div", { className: "m02-main__head", children: [title, back, slot, reload, save] }),
notice,
comboSlot,
host,
@@ -163,6 +166,7 @@ export function createMain(
const bar = (): void => {
reload.hidden = !sel;
save.hidden = !sel || !canEdit(sel.layer, isAdmin);
back.hidden = !sel || sel.layer !== "system" || !(sel.kind in NUMBER_FIELD);
};
const drop = (): void => {
@@ -457,6 +461,12 @@ export function createMain(
}
save.addEventListener("click", () => void doSave());
back.addEventListener("click", async () => {
const column = sel?.name;
if (!column || !(await confirmLeave())) return;
await open({ layer: "system", projectId: null, kind: "table", name: STRUCTURE_TABLE });
if (sel?.kind === "table") sheet?.selectColumn(column); // 그 사이 다른 것을 열었으면 안 고름
});
reload.addEventListener("click", async () => {
if (sel && (await confirmLeave())) void open(sel);
});