## Summary - 기상 맵 컨트롤 컴포넌트 추가 및 KHOA API 연동 개선 - KHOA API 엔드포인트 교체 및 해양예측 오버레이 Canvas 렌더링 전환 ## 변경 파일 - OceanForecastOverlay.tsx - WeatherMapOverlay.tsx - WeatherView.tsx - useOceanForecast.ts - khoaApi.ts - vite.config.ts ## Test plan - [ ] 기상정보 -> 기상 레이어 -> 해황 예보도 클릭 -> 이미지 렌더링 확인 - [ ] 기상정보 -> 기상 레이어 -> 백터 바람 클릭 -> 백터 이미지 렌더링 확인 Co-authored-by: Nan Kyung Lee <nankyunglee@Nanui-Macmini.local> Reviewed-on: #78 Co-authored-by: leedano <dnlee@gcsc.co.kr> Co-committed-by: leedano <dnlee@gcsc.co.kr>
43 lines
1.5 KiB
TypeScript
Executable File
43 lines
1.5 KiB
TypeScript
Executable File
import { useState } from 'react';
|
|
import AdminSidebar from './AdminSidebar';
|
|
import AdminPlaceholder from './AdminPlaceholder';
|
|
import { findMenuLabel } from './adminMenuConfig';
|
|
import UsersPanel from './UsersPanel';
|
|
import PermissionsPanel from './PermissionsPanel';
|
|
import MenusPanel from './MenusPanel';
|
|
import SettingsPanel from './SettingsPanel';
|
|
import BoardMgmtPanel from './BoardMgmtPanel';
|
|
import VesselSignalPanel from './VesselSignalPanel';
|
|
|
|
/** 기존 패널이 있는 메뉴 ID 매핑 */
|
|
const PANEL_MAP: Record<string, () => JSX.Element> = {
|
|
users: () => <UsersPanel />,
|
|
permissions: () => <PermissionsPanel />,
|
|
menus: () => <MenusPanel />,
|
|
settings: () => <SettingsPanel />,
|
|
notice: () => <BoardMgmtPanel initialCategory="NOTICE" />,
|
|
board: () => <BoardMgmtPanel initialCategory="DATA" />,
|
|
qna: () => <BoardMgmtPanel initialCategory="QNA" />,
|
|
'collect-vessel-signal': () => <VesselSignalPanel />,
|
|
};
|
|
|
|
export function AdminView() {
|
|
const [activeMenu, setActiveMenu] = useState('users');
|
|
|
|
const renderContent = () => {
|
|
const factory = PANEL_MAP[activeMenu];
|
|
if (factory) return factory();
|
|
const label = findMenuLabel(activeMenu) ?? activeMenu;
|
|
return <AdminPlaceholder label={label} />;
|
|
};
|
|
|
|
return (
|
|
<div className="flex flex-1 overflow-hidden bg-bg-0">
|
|
<AdminSidebar activeMenu={activeMenu} onSelect={setActiveMenu} />
|
|
<div className="flex-1 flex flex-col overflow-hidden">
|
|
{renderContent()}
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|