fix(B06): 저장된 상단 패널 높이가 첫 렌더에 반영되지 않아 종단면도가 잘리던 문제
패널을 줄여 둔 세션에서 B06 에 다시 들어오면 패널 높이는 복원되는데 차트 높이 배분만 기본값(종단 220 / 유토 190)으로 계산돼, 합계 410px 가 200px 공간에 밀려 들어가면서 종단면도가 20px 로 잘려 사실상 사라졌다. 창 크기를 조금만 바꾸면 정상으로 잡혀 (자가 치유) 구현 당시 검증에서 걸리지 않았다. 원인은 첫 렌더 시점의 조회 방식이다. draw() 는 root.replaceChildren(panel, ...) 보다 먼저 drawPanel() 을 부르므로, 그 시점의 panel 은 아직 root 에 붙기 전(detached)이다. detached 요소는 getComputedStyle 이 빈 값을 돌려주기 때문에 --b06-profile-height 를 읽지 못하고 BASE_PANEL_HEIGHT(506) 로 폴백했다. 리사이저가 복원해 둔 값 자체는 인라인 스타일에 정상적으로 들어가 있었다. panelHeight() 가 인라인 스타일을 먼저 읽고, 없을 때만 computed 로 폴백하게 바꿨다. 인라인 조회는 detached 상태에서도 동작하므로 첫 렌더부터 저장값이 반영된다. 구조는 C02 에서 유입됐으나 당시에는 차트가 하나뿐이라 영향이 작았고, C05 로 차트가 둘이 되면서 배분 실패가 종단면도 소멸로 확대됐다. 자체 검증 — 판정 기준은 "첫 렌더 = 재렌더"(결함이 있으면 첫 렌더만 어긋난다): - 저장값 296px : 296/99/111 = 296/99/111 일치 - 저장값 없음 : 496/220/190 = 496/220/190 일치 (회귀 없음) - 저장값 700px : 700/220/384 = 700/220/384 일치 (기본 초과 시 종단도 고정, 유토가 흡수) prettier 변경 없음, tsc --noEmit 오류 0건, 437줄. 근거: docs/raw/verification/2026-08-02_verify_mass_haul_multi_curve.md [F1] Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -199,6 +199,11 @@ export function createSectionView(
|
||||
panel.append(panelResizer.root);
|
||||
|
||||
const panelHeight = (): number => {
|
||||
// 첫 렌더 때 panel은 아직 root에 붙기 전(detached)이라 getComputedStyle이 빈 값을 준다.
|
||||
// 리사이저가 복원해 둔 인라인 변수부터 읽어야 저장된 높이가 첫 화면부터 반영된다.
|
||||
// (computed만 읽으면 기본값으로 폴백해 종단도가 잘린 채로 그려진다 — C05 검증 F1)
|
||||
const inline = Number.parseFloat(panel.style.getPropertyValue("--b06-profile-height"));
|
||||
if (Number.isFinite(inline) && inline > 0) return inline;
|
||||
const raw = Number.parseFloat(getComputedStyle(panel).getPropertyValue("--b06-profile-height"));
|
||||
return Number.isFinite(raw) && raw > 0 ? raw : BASE_PANEL_HEIGHT;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user