feat(view): ②·③ 모델과 입력창/철근표를 상하·좌우로 전환하고 분할선으로 크기 조절

- 중앙 도구줄 '상하 | 좌우' 전환(② 도구줄 신설), 분할선 드래그·키보드(←→↑↓, Shift×5, Home/End)·더블클릭 기본값
- 상하: 모델 높이 180–560 px, 좌우: 모델 폭 30–70 %(모델 왼쪽), 모델 접기 시 창 전체 사용
- 중앙 열 900 px 미만·1100 px 이하 화면은 자동 상하 + 안내, 넓어지면 복귀
- 단계별 표시 설정을 localStorage에 저장(기존 pierzainer.review-layout 이관), 프로젝트 파일 미포함
- 오른쪽 창 묶음(.workspace-pane) 도입에 맞춰 기존 검증 스크립트 선택자 갱신
- 단위시험 4개, verify-workspace-layout.cjs Chrome 27개 검사

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-11-09 18:01:20 +09:00
1 parent ef596650cc
commit 7d36c4b64a
8 files changed
+389 -44

No files matched your search

+26 -3
View File
@@ -196,8 +196,22 @@
<ul id="members" class="members"></ul>
</aside>
<div class="center-col">
<div class="center-col workspace" id="plan-workspace" data-stage="plan">
<div class="workspace-tools" aria-label="계획 화면 배치 조절">
<div class="layout-switch" role="group" aria-label="모델과 입력창 배치">
<button type="button" class="btn small" data-layout="stack" aria-pressed="true">상하</button>
<button type="button" class="btn small" data-layout="side" aria-pressed="false">좌우</button>
</div>
<label class="model-height-control" for="plan-model-height"><span data-size-label>모델 높이</span>
<input id="plan-model-height" type="range" min="180" max="560" step="20" value="400" />
<output id="plan-model-height-value" for="plan-model-height">400 px</output>
</label>
<button id="plan-model-toggle" class="btn small" type="button" aria-expanded="true" aria-controls="slot-plan">모델 접기</button>
<span class="layout-note muted small" aria-live="polite"></span>
</div>
<div class="viewer-slot" id="slot-plan"></div>
<div class="workspace-splitter" role="separator" tabindex="0" aria-controls="slot-plan" aria-label="모델 크기 조절"></div>
<div class="workspace-pane">
<!-- ② 교대 부재 카드 (시안, 2026-11-03): the card of the row picked in 부재 · 교대, under the 3D view. -->
<section id="abut-panel-plan" class="panel viewer abut-card" hidden aria-labelledby="abut-panel-plan-title">
<div class="viewer-head">
@@ -260,6 +274,7 @@
</footer>
</section>
</section>
</div>
</div>
<aside class="panel results" aria-labelledby="changes-title">
@@ -298,22 +313,30 @@
<ul id="rebar-tabs" class="members"></ul>
<p class="pnote">형상은 ② 형상계획 기준입니다. 형상이 바뀌면 "형상 바뀜"으로 표시합니다.</p>
</aside>
<div class="center-col review-workspace" id="review-workspace">
<div class="center-col workspace review-workspace" id="review-workspace" data-stage="rebar">
<div class="workspace-tools" aria-label="검토 공간 조절">
<label class="model-height-control" for="review-model-height">모델 높이
<div class="layout-switch" role="group" aria-label="모델과 철근표 배치">
<button type="button" class="btn small" data-layout="stack" aria-pressed="true">상하</button>
<button type="button" class="btn small" data-layout="side" aria-pressed="false">좌우</button>
</div>
<label class="model-height-control" for="review-model-height"><span data-size-label>모델 높이</span>
<input id="review-model-height" type="range" min="180" max="560" step="20" value="240" />
<output id="review-model-height-value" for="review-model-height">240 px</output>
</label>
<button id="review-model-toggle" class="btn small" type="button" aria-expanded="true" aria-controls="slot-rebar">모델 접기</button>
<button id="review-inputs" class="btn small" type="button">입력 보기</button>
<button id="review-table" class="btn small" type="button">철근표 보기</button>
<span class="layout-note muted small" aria-live="polite"></span>
</div>
<div class="viewer-slot" id="slot-rebar"></div>
<div class="workspace-splitter" role="separator" tabindex="0" aria-controls="slot-rebar" aria-label="모델 크기 조절"></div>
<div class="workspace-pane">
<section class="panel viewer" aria-labelledby="rebar-title">
<div class="viewer-head"><h2 id="rebar-title">철근표</h2><button id="rebar-materials" class="btn-o" type="button">재료표·수량산출 보기</button></div>
<p id="rebar-note" class="num"></p>
<div id="rebar-table"></div>
</section>
</div>
</div>
<aside class="panel results" aria-labelledby="rebar-issues-title">
<h2 id="rebar-issues-title">알림</h2>