/* ============================================================================= * B01_Dashboard_UI_View_SysDefaults.ts * 시스템 관리 › 설계 기본값(549-2) — 마스터 데이터 · 구조물 조합 · 구조물 옵션 · 도면 양식 · 계산 자리. * 카드 규칙은 `settingLinks` 한 벌(334) — 여기는 모양만(묶음 제목 + 둥근 상자 안 줄) · 계산 자리 = 창(504-2). * ========================================================================== */ import { createButton } from "@ui/ui_template_elements"; import { settingLinks, type SettingLink } from "../A00_Common/m_settings_nav"; import { navigateTo } from "../A00_Common/router"; import { openCalcSitesDialog } from "./B01_Dashboard_UI_CalcSites"; import { pageFrame, settingCard, settingRow } from "./B01_Dashboard_UI_PageKit"; import { group } from "./B01_Dashboard_UI_View_Parts"; import type { ViewCtx } from "./B01_Dashboard_UI_Views"; /** 카드 열쇠 → 묶음 제목 — 모르는 열쇠는 「그 밖」 */ const GROUP_OF: Record = { m01: "마스터 데이터", 구조물조합: "구조물 · 도면", 옵션: "구조물 · 도면", 도면: "구조물 · 도면", calcSites: "계산", }; const open = (link: SettingLink): void => link.key === "calcSites" ? void openCalcSitesDialog() : navigateTo(link.route, link.query); export function mountSysDefaults(host: HTMLElement, ctx: ViewCtx): void { const groups = new Map(); for (const link of settingLinks(ctx.me, ctx.companyId)) { const title = GROUP_OF[link.key] ?? "그 밖"; const openBtn = createButton({ label: "열기", variant: "ghost", onClick: () => open(link) }); groups.set(title, [...(groups.get(title) ?? []), settingRow(link.title, link.desc, openBtn)]); } const page = pageFrame(host, "설계 기본값", "새 프로젝트가 처음 받는 마스터 값을 관리합니다."); page.body.append(...[...groups].map(([title, rows]) => group(title, settingCard(rows)))); }