- B05 좌측 패널(714줄)을 Fields · Settings · Route · View · Sections 로 나누고 createRoutePanel 은 등록부로 세움 - B06 좌측 칸(횡단 보기 설정 · 표준 횡단면 설정)을 등록부로 · 페이지는 createDesignPanel 만 부름 - 「구조물 배치」는 design_sections 한 정의로 두 보기 - 아래 단추 [초기화][저장][확정][보기 전환] — B05 [확정]은 저장 흐름 이음 전까지 꺼 둠 - [초기화] 는 design_reset 한 함수를 두 보기가 부름 - 칸 DOM 은 고치기 전과 같음(전후 DOM 대조) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EauA2ATmqNRbeV48s9CcBr
32 lines
1.5 KiB
TypeScript
32 lines
1.5 KiB
TypeScript
/* =============================================================================
|
|
* design_sections.ts
|
|
* 두 보기가 **함께 쓰는 좌측 칸 정의** — 「구조물 배치」(계획서 24-2b).
|
|
*
|
|
* 한 정의에 `views: ["profile", "cross"]` 를 적어 두 보기가 같은 칸을 같은 자리(맨 위)에 세운다.
|
|
* 칸 알맹이는 페이지가 건네는 부품 `structures`(뿌리 · 아래 고정 영역에 얹을 목록 뿌리)다 —
|
|
* 종단 보기는 배치 콜백, 횡단 보기는 거기에 횡단 조정 콜백을 더해 만들지만 **칸 정의는 하나**다.
|
|
* ========================================================================== */
|
|
|
|
import { part, registerPanelSection } from "./design_panel";
|
|
|
|
/** 페이지가 건네는 「구조물 배치」 부품의 모양 — 뿌리와 목록 뿌리만 안다. */
|
|
export interface StructuresPart {
|
|
root: HTMLElement;
|
|
listRoot: HTMLElement;
|
|
}
|
|
|
|
export const STRUCTURES_SECTION_ID = "structures";
|
|
|
|
registerPanelSection({
|
|
id: STRUCTURES_SECTION_ID,
|
|
title: "구조물 배치",
|
|
views: ["profile", "cross"],
|
|
order: 10,
|
|
build: (ctx) => {
|
|
const structures = part<StructuresPart>(ctx, "structures");
|
|
// 구조물 목록은 「구조물 배치」 본문이 아니라 아래 고정 영역에 놓는다 — 본문에 두면
|
|
// 고른 구조물의 폼 길이에 밀려 화면 밖으로 나갔다(2026-08-18 사용자 지시).
|
|
return { root: structures.root, dock: structures.listRoot };
|
|
},
|
|
});
|