auto: 2026-08-29 09:04 (EOMSANGDON-HOME)

This commit is contained in:
2026-08-29 09:04:58 +09:00
parent f11e98f8e9
commit 5142bdde9b
3 changed files with 14 additions and 2 deletions
@@ -52,6 +52,8 @@ export interface StructurePanelDeps {
setBasinExtraCount: (count: number) => void;
/** 이동 조작 가능 여부 — 집수정(자리 고정)은 숨긴다. */
canNudge: (key: RevetKey) => boolean;
/** 좌우·상하 걸음이 0.1m인가(독립·추가 기슭막이). 배관 기준벽은 false = 1m. */
fineMove: (key: RevetKey) => boolean;
/** 상황에 안 맞는 선택지 숨김(2026-08-22 사용자) — 기하가 판정한 가용성. */
optionsFor: () => { revetAllowed: boolean; basinLUAllowed: boolean };
/** 다단 기슭막이 상태 — 유출 벽 선택 시 단 수 행 표시 판단에 쓴다. */
@@ -91,8 +93,6 @@ const STEP_M = 1.0;
* 배관 기준벽(유입·유출)만 관 길이에 맞춘 1m 걸음을 그대로 쓴다.
*/
const OWN_STEP_M = 0.1;
const moveStepOf = (key: RevetKey): number =>
key === "inlet" || key === "outlet" ? STEP_M : OWN_STEP_M;
const HEIGHT_STEP_M = 0.1;
const BASIN_STEP_M = 0.1;
/** 전/후 한 걸음(m) — 집수정 기본이 2m·1/1이라 1m 눈금은 너무 거칠다. */
@@ -148,6 +148,7 @@ export function buildStructurePanel(deps: StructurePanelDeps): StructurePanelHan
const act = (run: (key: RevetKey) => void) => () => {
if (current) run(current);
};
const moveStepOf = (key: RevetKey): number => (deps.fineMove(key) ? OWN_STEP_M : STEP_M);
const moveRow = makeRow(L("B06_Cross_Move_Label"));
// 버튼 묶음 클래스는 컨트롤 행에 — **십자(D-pad) 배치**(2026-08-22 사용자):
+5
View File
@@ -185,6 +185,9 @@ export function createCrossSectionCard(
let showRevetControl: (visible: boolean) => void = () => undefined;
let culvertPipeLengthM: number | null = null; // 관 길이(m) — 조정창 표기용
let culvertInletIsBasin = false; // 유입이 집수정인가 — 조정창 표시·제목 분기
// 이 카드의 기준벽이 **독립 기슭막이**인가(관 없는 숨김 세트). 조정창 걸음이
// 배관(1m)과 다르다(0.1m — 2026-08-29 사용자).
let culvertHiddenPipe = false;
/** 드롭다운 선택지 가용성(2026-08-22) — 기하 판정을 조정창에 전달. */
let culvertInletOptions = { revetAllowed: true, basinLUAllowed: true };
/** 추가 기슭막이 상태(2026-08-22) — 끝 성토부 5m 이상(canAdd)·세워진 개수. */
@@ -505,6 +508,7 @@ export function createCrossSectionCard(
? null
: (culvertLayout?.pipe.lengthM ?? null);
culvertInletIsBasin = !!culvertLayout?.basin;
culvertHiddenPipe = culvertLayout?.culvert.hidden_pipe === true;
if (culvertLayout) {
const state = culvertCardState(culvertLayout);
culvertInletOptions = state.inletOptions;
@@ -672,6 +676,7 @@ export function createCrossSectionCard(
appliedD: () => culvertAppliedD,
pipeLengthM: () => culvertPipeLengthM,
inletIsBasin: () => culvertInletIsBasin,
hiddenPipe: () => culvertHiddenPipe,
inletOptions: () => culvertInletOptions,
extraState: () => culvertExtraState,
basinExtraState: () => culvertBasinExtraState,
@@ -61,6 +61,8 @@ export interface StructurePanelContext {
appliedD: () => Map<RevetKey, number>;
pipeLengthM: () => number | null;
inletIsBasin: () => boolean;
/** 기준벽이 독립 기슭막이(관 없는 숨김 세트)인가 — 조정창 걸음 분류에 쓴다. */
hiddenPipe: () => boolean;
inletOptions: () => { revetAllowed: boolean; basinLUAllowed: boolean };
extraState: () => { canAdd: boolean; count: number };
basinExtraState: () => { canAdd: boolean; count: number };
@@ -134,6 +136,10 @@ export function structurePanelDeps(ctx: StructurePanelContext): StructurePanelDe
resetBasin: () => ctx.inletStructure?.resetAdjust(ctx.adjustChainage()),
// 집수정은 자리 고정 — 유입이 집수정이면 ◀/▶/↺를 숨긴다(추가 벽은 항상 이동).
canNudge: (key) => key !== "inlet" || !ctx.inletIsBasin(),
// 걸음 분류(2026-08-29 사용자): **배관 기준벽만 1m**, 나머지(독립 기슭막이 기준벽·
// 배관/독립 종속 추가 벽·옛 D경로 독립 벽)는 0.1m.
fineMove: (key) =>
(key !== "inlet" && key !== "outlet") || ctx.hiddenPipe(),
optionsFor: () => ctx.inletOptions(),
extraState: () => ctx.extraState(),
basinExtraState: () => ctx.basinExtraState(),