feat(view): drop the 3D title band; pier name in 교각 목록; view menu under 부재 표시, origin under 색 기준

On wide screens the pier name moves to the 교각 목록 (name · type), the band is gone and the 3D view takes the full height.
A left stack holds 부재 표시 and then 시점; a right stack holds 색 기준 and then the ⓘ origin note. The active pier is scrolled
into view when it changes. Below 600 px the title is kept above the model and the stacks sit below it.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-10-23 11:31:46 +09:00
1 parent e66c259d1e
commit 86a4b2fd80
3 files changed
+50 -39

No files matched your search

+10 -1
View File
@@ -314,7 +314,8 @@ function renderPierRows(list: HTMLUListElement, mode: Stage): void {
pier.checked = check.checked;
renderAll();
});
const name = el('button', pier.input.name, 'pier-name');
// The pier name and type are shown here, since the 3D title band is gone on wide screens (승인 2026-10-23).
const name = el('button', `${pier.input.name} · ${pier.input.type}`, 'pier-name');
name.type = 'button';
name.setAttribute('aria-pressed', String(pier.input.name === state.active));
name.addEventListener('click', () => {
@@ -372,6 +373,7 @@ const pt = (p: { e: number; n: number }) => `E ${p.e.toFixed(3)}, N ${p.n.toFixe
function renderPanels(): void {
const pier = activePier();
const m = pier?.model;
// The pier name is in 교각 목록 on wide screens; the title keeps it on narrow ones (승인 2026-10-23).
$('viewer-title').textContent = pier ? `${pier.input.name} · ${pier.input.type} 교각 형상` : '교각 3D 뷰';
$('origin').textContent = m ? `원점 = 교각 중심 (${pt(m.pivot)})` : '';
@@ -447,8 +449,15 @@ function renderDefaults(): void {
for (const text of items) box.appendChild(el('li', text));
}
/** Pier last brought into view in 교각 목록, so that a manual scroll is not undone by the next render. */
let lastScrolledPier: string | null = null;
function renderAll(): void {
updatePartsCount();
if (state.active !== lastScrolledPier) {
lastScrolledPier = state.active;
document.querySelector<HTMLButtonElement>('.pier-items [aria-pressed="true"]')?.scrollIntoView({ block: 'nearest' });
}
$('status').textContent = state.piers.length ? '' : '엑셀을 불러오면 교각 형상을 생성합니다.';
renderHeader();
renderPierList();