횡단설계(B06) 다음을 상세설계 → 수량산출 → 설계도서 순으로 재배열하고, 폴더 번호가 흐름과 일치하도록 이름을 맞바꾼다. - B08_DesignDetail → B07_DesignDetail, B07_Quantity → B08_Quantity (파일 접두어·식별자·라우트·locale 키 전량 스왑) - STAGE_KEYS 4=DESIGN_DETAIL, 5=QUANTITY 스왑 + 라우터 stage 리터럴 교체 - CAD 마운트 /b08-cad → /b07-cad (main.py·vite proxy·iframe URL), openwebcad Toolbar 라벨 B07로 수정 후 재빌드 - 유지: openwebcad postMessage 프로토콜 aislo:b08:*·패키지명(내부 식별자) - 기존 프로젝트 storage 폴더 rename + project_manifest 갱신, DB project_workflow_stages stage_no 4↔5 행 스왑 완료 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
import { type FC, useCallback, useEffect, useState } from 'react';
|
||
import { HtmlEvent } from '../App.types';
|
||
import { requestDrawingNavigation } from '../integration/aislo-drawing-bridge';
|
||
import { getDesignMeta } from '../state';
|
||
|
||
/**
|
||
* 도면 내비게이션 바 (CAD 화면 하단 중심).
|
||
* 수량 산출표는 HTML 테이블 대신 도면 자체의 CAD 테이블 레이어(b08-cross-table)로
|
||
* 렌더되므로, 여기서는 제목·측점정보·확정상태·이전/다음 이동만 담당한다.
|
||
*/
|
||
export const QuantityPanel: FC = () => {
|
||
const [meta, setMeta] = useState(getDesignMeta());
|
||
|
||
const refresh = useCallback(() => setMeta(getDesignMeta()), []);
|
||
useEffect(() => {
|
||
window.addEventListener(HtmlEvent.UPDATE_STATE, refresh);
|
||
return () => window.removeEventListener(HtmlEvent.UPDATE_STATE, refresh);
|
||
}, [refresh]);
|
||
|
||
if (!meta) return null;
|
||
|
||
return (
|
||
<section className="cad-qtable controls" data-collapsed="true">
|
||
<header className="cad-qtable__header">
|
||
<button
|
||
type="button"
|
||
className="cad-qtable__nav"
|
||
disabled={!meta.hasPrev}
|
||
title="이전 도면"
|
||
onClick={() => requestDrawingNavigation('prev')}
|
||
>
|
||
‹
|
||
</button>
|
||
<div className="cad-qtable__title">
|
||
<strong>{meta.title}</strong>
|
||
{meta.info && <span>{meta.info}</span>}
|
||
<em
|
||
className="cad-qtable__status"
|
||
data-confirmed={meta.confirmed}
|
||
title={meta.confirmed ? '설계 확정됨' : '미확정'}
|
||
>
|
||
{meta.confirmed ? '확정' : '미확정'}
|
||
</em>
|
||
</div>
|
||
<button
|
||
type="button"
|
||
className="cad-qtable__nav"
|
||
disabled={!meta.hasNext}
|
||
title="다음 도면"
|
||
onClick={() => requestDrawingNavigation('next')}
|
||
>
|
||
›
|
||
</button>
|
||
</header>
|
||
</section>
|
||
);
|
||
};
|