fix(structure): 정의 그룹 상자 꼴 = 명세 컨테이너 꼴(52-18)
- 잇기 줄 글 「집계 항목」 → 「구조물 조합」 (가드레일 · 맹암거 · 대피로 · 사토장 · 토취장) - 그룹 숫자 칸 = −/+ 단추 달린 숫자 칸(0.1 · 소수 1자리 · 라벨 대상 = 숫자 칸) - 상자 = 명세와 같은 조각(group · grid) · 그룹 전용 상자 꼴 CSS 걷음 - 저장 값 · 키 · 잇기 동작 그대로 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016PSXsvyDxjNmufteN5bqmt
This commit is contained in:
@@ -20,6 +20,7 @@ import {
|
||||
staleValues,
|
||||
} from "./B05_Profile_UI_Structures_Define";
|
||||
import { FORM_OPTION_KEYS } from "./B05_Profile_UI_Drainage_Facility_Merge";
|
||||
import { stepper } from "./B05_Profile_UI_Drainage_Facility_Fields";
|
||||
import { STRUCTURE_SPECS } from "../A00_Common/design/design_structure_pipe";
|
||||
import { paintStructureSpec, specOwnedKeys } from "./B05_Profile_UI_Structures_Spec";
|
||||
import { solveSplit, specKeys, type SplitRole } from "../A00_Common/design/design_structure_spec";
|
||||
@@ -97,7 +98,15 @@ export function renderOptionFields(
|
||||
const name = (c: string): string => type.spec_names?.[`${option.key}=${c}`] ?? c;
|
||||
const input = optionControl(option, values[option.key], name);
|
||||
const label = `${option.unit ? `${option.label} (${option.unit})` : option.label}${option.not_in_table ? " · 표에 안 쓰임" : ""}`;
|
||||
const wrap = field(label, input, option.default_basis);
|
||||
// 정의 그룹 상자로 옮겨 갈 숫자 칸 = 명세 컨테이너와 같은 [-][숫자][+](52-18)
|
||||
const grouped =
|
||||
option.input === "number" && !!type.groups?.some((g) => g.options.includes(option.key));
|
||||
const wrap = field(
|
||||
label,
|
||||
grouped ? stepper(input as HTMLInputElement, 0.1) : input,
|
||||
option.default_basis,
|
||||
);
|
||||
if (grouped) wrap.htmlFor = input.id; // 라벨 대상 = 숫자 칸(첫 버튼으로 새지 않게)
|
||||
wrap.dataset.optionKeys = option.key; // 옵션 그룹 상자가 이 표식으로 칸을 옮김(PLAN 46-3)
|
||||
// 배치 격자(48-3) — 정의 `배치` 의 줄 · 칸 · 너비 · 없으면 흐름대로
|
||||
const place = gridPlace(type.spots?.[option.key], columns);
|
||||
|
||||
Reference in New Issue
Block a user