Files
Aislo/M02_MasterTemplete/M02_MasterTemplete_Labor_Born.ts
T
eomsangdonandClaude Sonnet 5.5 52c8692fdd feat(738-2 · 740-2): 단가산출 · 일위대가 상세 머리 [초기화] [삭제] · 넣은 줄 출처 꼬리표
- 머리 단추 차례 … [새로고침] [초기화] [삭제] [저장] — 새 Main_Actions(쓰기 권한 있는 층만 보임)
- [삭제] = 735 경고 창(쓰는 곳 표 · 키) → 나무 지우기 → 목록으로 · 쓰는 곳 없음 = 한 줄 물음
- [초기화] = 서버 -reset 미리 보기(걷힐 고침 수 · 뺀 줄 되살림 수) → 물음 → 그 층에 씀 → 다시 그림 ·
  저장 안 한 고침은 먼저 물음 · 옵션 · 기본정보 그대로
- 출처 꼬리표(본뜬) — 순수 logic/M02_Born_Tag · 단가산출 = 이름 옆 글 꼬리표(공용 Ho 꼬리표 칸을
  이름 줄 안으로 · 첫 줄 보임 · 둘째 줄 풍선) · 일위대가표 격자 = 비고 칸 글 + 풍선 · 줄 표 = 이름 끝
- 시험: 새 test_740_2 · 낡은 시험 4 고침(test_727 · 717_2b · 704_3 · 704_4 — 모델 · 격자 파일을
  이어 붙여 도는 시험이라 새 꼬리표 글 파일을 목록에 더함)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 20:36:15 +09:00

38 lines
1.6 KiB
TypeScript

/* =============================================================================
* M02_MasterTemplete_Labor_Born.ts
* 일위대가 상세 출처 꼬리표(740-2) — 넣어 펼친 줄 · 자재의 `본뜬` 을 짧은 글로(풍선 = 키 · 이름 · 층 · 때).
* 일위대가표 격자 = 비고 칸 글 `bornNote` + 풍선 `tipBorn`(칸 폭 · 줄 높이 안 바뀜)
* 줄 표(`Labor_Rows` · `Labor_MatTable`) = 이름 글 끝 `bornSpan`(같은 줄 · 넘치면 말줄임)
* 색 단추 아님 · 셈에 안 씀.
* ========================================================================== */
import { el } from "@ui/ui_template_elements";
import { bornText } from "./logic/M02_Born_Tag";
const SPLIT = "\n"; // 글 첫 줄 = 보임 · 나머지 = 풍선
/** 일위대가표 격자 비고 칸 풍선 — `at` = 격자 줄 → 일위대가 줄 번호(담은 로직 뒤 자재) */
export function tipBorn(
root: HTMLElement,
at: (row: number) => number | null,
born: (n: number) => unknown,
): void {
root.querySelectorAll<HTMLElement>("tr[data-i]").forEach((tr) => {
const n = at(Number(tr.dataset.i));
const [, ...tip] = n === null ? [] : bornText(born(n)).split(SPLIT);
if (tip.length)
tr.querySelector<HTMLElement>("td:nth-last-child(2)")?.setAttribute("title", tip.join(" "));
});
}
/** 줄 표 이름 끝 꼬리표 — `본뜬` 이 없으면 null */
export function bornSpan(born: unknown): HTMLElement | null {
const [shown, ...tip] = bornText(born).split(SPLIT);
if (!shown) return null;
return el("span", {
className: "m02-labrow__born",
text: ` ${shown}`,
attrs: { title: tip.join(" "), "data-born": "" },
});
}