/* ============================================================================= * B08_Quantity_UI_Side_BenchCut.ts * 산출 조건 「층따기 길이」 칸 · 근거 줄 · [제안값 넣기] 단추 (2026-09-14 브레인 판정). * * 페이지 본문(`B08_Quantity_UI_Page.ts`)이 700줄을 넘어 이 칸 묶음을 이 파일로 뺌(CLAUDE.md 4장). * ⚠ 자동으로 안 채움 — 임도기술교본 6-4 「나. 층따기」 「설계도서에 명시되어 있는 높이와 폭으로 * 하고 … 현장감독관과 협의하여 조정」 ⇒ 값은 설계자가 정함. 단추를 **누른 때만** KDS 44 30 00 * 도로토공 2.3.4 (4) ② 표준치수(토사 최소 높이 500 mm)가 칸에 들어감 · 캐시에만, [저장]에서 정본. * ========================================================================== */ import { ui_locales, currentLanguageIndex } from "@ui/ui_template_locale"; import { createButton } from "@ui/ui_template_elements"; import type { SideFieldHelpers } from "./B08_Quantity_UI_Side_TreeWaste"; function L(key: keyof typeof ui_locales): string { return ui_locales[key][currentLanguageIndex]; } /** KDS 44 30 00 도로토공 2.3.4 (4) ② — 기초지반이 토사인 경우 최소 높이(임도 지반이 대개 토사). */ const KDS_SOIL_MIN_HEIGHT_M = 0.5; export interface BenchCutDraft { bench_cut_depth_m: number | null; dirty: boolean; } export function appendBenchCutFields( panel: HTMLElement, draft: BenchCutDraft, h: SideFieldHelpers, ): void { const row = h.optionalNumberField( L("B08_Quantity_Side_BenchCut_Label"), draft.bench_cut_depth_m, "0.01", (value) => { draft.bench_cut_depth_m = value; draft.dirty = true; }, ); panel.append(row, h.hintRow(L("B08_Quantity_Side_BenchCut_Hint"))); // 층따기 표준치수 — KDS 근거 표시(2026-09-14 브레인 정정 · 「제안값」 경고 아님). panel.append(h.hintRow(L("B08_Quantity_Side_BenchCut_Suggest"))); panel.append( createButton({ label: L("B08_Quantity_Side_BenchCut_Fill"), variant: "ghost", onClick: () => { const input = row.querySelector("input"); if (input) input.value = String(KDS_SOIL_MIN_HEIGHT_M); draft.bench_cut_depth_m = KDS_SOIL_MIN_HEIGHT_M; draft.dirty = true; }, }), ); }