diff --git a/src/app/(main)/network-simulation/page.tsx b/src/app/(main)/network-simulation/page.tsx index 9306ea5..68309e3 100644 --- a/src/app/(main)/network-simulation/page.tsx +++ b/src/app/(main)/network-simulation/page.tsx @@ -3,6 +3,8 @@ import { useCallback, useMemo, useState } from "react"; import MapComponent from "@app/OlMap/MapComponent"; import Timeline from "@app/OlMap/Controls/Timeline"; +import MapToolbar from "@app/OlMap/Controls/Toolbar"; + import SCADADeviceList from "@components/olmap/SCADADeviceList"; import SCADADataPanel from "@components/olmap/SCADADataPanel"; @@ -77,6 +79,7 @@ export default function Home() {
+
([]); + const [panelVisible, setPanelVisible] = useState(false); + + const devices = useMemo(() => mockDevices, []); + + const deviceLabels = useMemo( + () => + devices.reduce>((acc, device) => { + acc[device.id] = device.name; + return acc; + }, {}), + [devices] + ); + + const handleSelectionChange = useCallback((ids: string[]) => { + setSelectedDeviceIds(ids); + setPanelVisible(ids.length > 0); + }, []); + + const handleDeviceClick = useCallback(() => { + setPanelVisible(true); + }, []); + + const handleClosePanel = useCallback(() => { + setPanelVisible(false); + }, []); + return (
- + + + + +
); } diff --git a/src/app/OlMap/Controls/DrawPanel.tsx b/src/app/OlMap/Controls/DrawPanel.tsx index 9f96cca..98c2375 100644 --- a/src/app/OlMap/Controls/DrawPanel.tsx +++ b/src/app/OlMap/Controls/DrawPanel.tsx @@ -367,13 +367,13 @@ const DrawPanel: React.FC = () => { onClick={() => handleToolClick("delete")} disabled={isDeleteDisabled} /> - } name="保存" isActive={false} onClick={() => handleToolClick("save")} disabled={isSaveDisabled} - /> + /> */} ); diff --git a/src/app/OlMap/Controls/Toolbar.tsx b/src/app/OlMap/Controls/Toolbar.tsx index 835d07d..0b2e608 100644 --- a/src/app/OlMap/Controls/Toolbar.tsx +++ b/src/app/OlMap/Controls/Toolbar.tsx @@ -26,7 +26,11 @@ import RenderFeature from "ol/render/Feature"; import { config } from "@/config/config"; const backendUrl = config.backendUrl; -const Toolbar: React.FC = () => { +// 添加接口定义隐藏按钮的props +interface ToolbarProps { + hiddenButtons?: string[]; // 可选的隐藏按钮列表,例如 ['info', 'draw', 'style'] +} +const Toolbar: React.FC = ({ hiddenButtons }) => { const map = useMap(); const data = useData(); if (!data) return null; @@ -548,24 +552,30 @@ const Toolbar: React.FC = () => { return ( <>
- } - name="查看属性" - isActive={activeTools.includes("info")} - onClick={() => handleToolClick("info")} - /> - } - name="矢量编辑" - isActive={activeTools.includes("draw")} - onClick={() => handleToolClick("draw")} - /> - } - name="图层样式" - isActive={activeTools.includes("style")} - onClick={() => handleToolClick("style")} - /> + {!hiddenButtons?.includes("info") && ( + } + name="查看属性" + isActive={activeTools.includes("info")} + onClick={() => handleToolClick("info")} + /> + )} + {!hiddenButtons?.includes("draw") && ( + } + name="矢量编辑" + isActive={activeTools.includes("draw")} + onClick={() => handleToolClick("draw")} + /> + )} + {!hiddenButtons?.includes("style") && ( + } + name="图层样式" + isActive={activeTools.includes("style")} + onClick={() => handleToolClick("style")} + /> + )}
{showPropertyPanel && } {showDrawPanel && map && } diff --git a/src/app/OlMap/MapComponent.tsx b/src/app/OlMap/MapComponent.tsx index 18bb866..2a9c2d0 100644 --- a/src/app/OlMap/MapComponent.tsx +++ b/src/app/OlMap/MapComponent.tsx @@ -632,6 +632,7 @@ const MapComponent: React.FC = ({ children }) => {
+ {children}
diff --git a/src/app/OlMap/MapTools.tsx b/src/app/OlMap/MapTools.tsx index 7cbdac8..358b0f7 100644 --- a/src/app/OlMap/MapTools.tsx +++ b/src/app/OlMap/MapTools.tsx @@ -1,7 +1,6 @@ import React from "react"; import Zoom from "./Controls/Zoom"; import BaseLayers from "./Controls/BaseLayers"; -import MapToolbar from "./Controls/Toolbar"; import ScaleLine from "./Controls/ScaleLine"; import LayerControl from "./Controls/LayerControl"; interface MapToolsProps {} @@ -12,7 +11,6 @@ const MapTools: React.FC = () => { - {/* 继续添加其他自定义控件 */}