Files
Aislo/M02_MasterTemplete/M02_MasterTemplete_Labor_National.ts
eomsangdonandClaude Opus 5.5 09134bab84 refactor(M02): 띠 알림 · 빈 상태 · 보조 글 · 배지 · 탭 · 표 · 목록 줄 · 도구줄 · 체크를 부품으로 (PLAN 553-5)
- DataFlow: 표 넷 = 데이터표 · 함수 판 알림 · 선/알약 경고 · 끊긴 곳 = 띠 알림 · 알약 · 칸 종류 = 배지 · 고르는 줄 = 목록 줄 · 입력 넷 = 입력 · 도구줄 여섯 · 날 색 → 공통 값
- 구조물 옵션 · 구조물 · 도면 · 면적 · 품목 고르기: 판 띠 = 띠 알림 · 한눈/종류별/부품 = 탭 · 표 둘 = 데이터표 · 체크 둘 = 체크 · 카드 · 번호 = 카드 · 배지 · 도면 도구줄
- 일위대가 · 호표 · 실무자료 · 본 화면 · 서고: 알림 = 띠 알림 · 빈 상태 · 보조 글 · 도구줄 여섯 · 옛 보라 별칭 0
- M01 로직 입력칸 = 입력 부품(작은 칸) · 일위대가 상세 줄 수 고정 시험 693 · 지킴 시험 M02 몫 더함

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 23:44:19 +09:00

77 lines
3.0 KiB
TypeScript

/* =============================================================================
* M02_MasterTemplete_Labor_National.ts
* 「전국」 자재 줄(PLAN 361-2) — 실무자료 만들기가 `본뜬.전국자재` 에 적은 자재(키 · 단가 없음 · 361-1)를
* 상세 자재목록 아래 보기 전용 표로 · 이름 · 규격 · 수량 · 단위 · 세 칸(글만) · 금액 칸 비움 · 단추 없음.
* 없으면 아무것도 안 그림 · 셈 · 문서 꼴 · 저장 길은 그대로(보기만).
* ========================================================================== */
import { el } from "@ui/ui_template_elements";
import { currentLanguageIndex } from "@ui/ui_template_locale";
import type { LaborDoc } from "./M02_MasterTemplete_Labor_Api";
import { markCells, markHeads } from "./M02_MasterTemplete_Labor_MatMarks";
import { tc } from "./M02_MasterTemplete_Labor_Text";
const TEXT = {
Title: [
"전국 자재 — 지역은 프로젝트에서 · 금액 없음(보기만)",
"Nationwide materials — region set in the project · no price (view only)",
],
Code: ["전국", "Nationwide"],
Region: ["지역은 프로젝트에서", "Region set in the project"],
} as const;
const say = (k: keyof typeof TEXT): string => TEXT[k][currentLanguageIndex as 0 | 1] ?? TEXT[k][0];
/** `본뜬.전국자재` 표 — 없으면 [] */
export function nationalRows(origin: LaborDoc["본뜬"]): HTMLElement[] {
const mats = origin?.전국자재 ?? [];
if (!mats.length) return [];
const heads = [
tc("Labor_Code"),
tc("Col_Name"),
tc("Labor_Spec"),
tc("Labor_QtyCol"),
tc("Labor_Unit"),
...markHeads(),
tc("Labor_AppliedSum"),
];
const rows = mats.map((m) =>
el("tr", {
className: "m02-labrow__row",
attrs: { "data-labor-national": m.이름 },
children: [
el("td", { className: "m02-labrow__code", text: say("Code") }),
el("td", {
className: "m02-labrow__name",
children: [
el("strong", { text: m.이름 }),
el("small", { className: "m02-labrow__note", text: say("Region") }),
],
}),
el("td", { className: "m02-labrow__spec", text: m.규격, attrs: { title: m.규격 } }),
el("td", { className: "m02-labrow__num", text: String(m.수량?.손 ?? "") }),
el("td", { className: "m02-labrow__unit", text: m.단위 }),
...markCells(m),
el("td", { className: "m02-labrow__num", text: "—" }),
],
}),
);
return [
el("p", { className: "ui-text ui-text--muted", text: say("Title") }),
el("div", {
className: "ui-general-block__table-wrap",
attrs: { "data-labor-national-table": "" },
children: [
el("table", {
className: "ui-general-block__table m02-labrow",
children: [
el("thead", {
children: [el("tr", { children: heads.map((t) => el("th", { text: t })) })],
}),
el("tbody", { children: rows }),
],
}),
],
}),
];
}