import { useState, useMemo } from 'react' import { LayerTree } from '@common/components/layer/LayerTree' import { useLayerTree } from '@common/hooks/useLayers' import { layerData } from '@common/data/layerData' import type { LayerNode } from '@common/data/layerData' import type { Layer } from '@common/services/layerService' interface InfoLayerSectionProps { expanded: boolean onToggle: () => void enabledLayers: Set onToggleLayer: (layerId: string, enabled: boolean) => void layerOpacity: number onLayerOpacityChange: (val: number) => void layerBrightness: number onLayerBrightnessChange: (val: number) => void } const InfoLayerSection = ({ expanded, onToggle, enabledLayers, onToggleLayer, layerOpacity, onLayerOpacityChange, layerBrightness, onLayerBrightnessChange, }: InfoLayerSectionProps) => { // API에서 레이어 트리 데이터 가져오기 const { data: layerTree, isLoading } = useLayerTree() const [layerColors, setLayerColors] = useState>({}) // 정적 데이터를 Layer 형식으로 변환 (API 실패 시 폴백) const staticLayers = useMemo(() => { const convert = (node: LayerNode): Layer => ({ id: node.code, parentId: node.parentCode, name: node.name, fullName: node.fullName, level: node.level, wmsLayer: node.layerName, icon: node.icon, count: node.count, children: node.children?.map(convert), }) return layerData.map(convert) }, []) // API 데이터 우선, 실패 시 정적 데이터 폴백 const effectiveLayers = (layerTree && layerTree.length > 0) ? layerTree : staticLayers return (

📂 정보 레이어

{expanded ? '▼' : '▶'}
{expanded && (
{isLoading && effectiveLayers.length === 0 ? (

레이어 로딩 중...

) : effectiveLayers.length === 0 ? (

레이어 데이터가 없습니다.

) : ( setLayerColors(prev => ({ ...prev, [id]: color }))} /> )} {/* 레이어 스타일 조절 */}
레이어 스타일
투명도 onLayerOpacityChange(Number(e.target.value))} /> {layerOpacity}%
밝기 onLayerBrightnessChange(Number(e.target.value))} /> {layerBrightness}%
)}
) } export default InfoLayerSection