From f379b86fa145eacdf9ee6418f65f5f6e5258db34 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 16 十月 2024 09:18:08 +0800 Subject: [PATCH] # --- zy-acs-flow/src/map/MapPage.jsx | 41 ++++++++++++++++++++++++++++++++++++----- 1 files changed, 36 insertions(+), 5 deletions(-) diff --git a/zy-acs-flow/src/map/MapPage.jsx b/zy-acs-flow/src/map/MapPage.jsx index 733339e..cfbd71f 100644 --- a/zy-acs-flow/src/map/MapPage.jsx +++ b/zy-acs-flow/src/map/MapPage.jsx @@ -48,13 +48,15 @@ const [app, setApp] = useState(null); const [mapContainer, setMapContainer] = useState(null); - const [mode, setMode] = useState(MAP_MODE.OBSERVER_MODE); + const [mode, setMode] = useState(null); const [dataFetched, setDataFetched] = useState(false); const [insightVisible, setInsightVisible] = useState(false); const [deviceVisible, setDeviceVisible] = useState(false); const [settingsVisible, setSettingsVisible] = useState(false); const [batchSelectionVisible, setBatchSelectionVisible] = useState(false); + const [curSprite, setCurSprite] = useState(null); + const prevCurSpriteRef = useRef(); const [spriteSettings, setSpriteSettings] = useState(null); const prevSpriteSettingsRef = useRef(); const [batchSprites, setBatchSprites] = useState([]); @@ -65,6 +67,7 @@ }); const handleResize = () => { + if (!contentRef) { return; } const width = contentRef.current.offsetWidth; const height = contentRef.current.offsetHeight; player.resize(width, height); @@ -86,13 +89,15 @@ await Http.fetchMapData(); websocket.connect(); websocket.onMessage = (wsMsg) => { - Tool.generateDynamicGraphic(curZone, JSON.parse(wsMsg)); + Tool.generateDynamicGraphic(curZone, JSON.parse(wsMsg), () => { + setDataFetched(true); + setMode(MAP_MODE.OBSERVER_MODE); + }); } setTimeout(() => { player.adaptScreen(); notify.info(translate('page.map.welcome')); - setDataFetched(true); }, 200) } initialize(); @@ -140,6 +145,9 @@ setBatchSprites(selectedSprites); }); + mapContainer.children.forEach(child => { + Tool.beInsight(child, setCurSprite); + }) break case MAP_MODE.MOVABLE_MODE: player.showGridLines(); @@ -188,6 +196,26 @@ mapContainer.addChild(sprite); Tool.beMovable(sprite); }; + + // watch curSprite + React.useEffect(() => { + if (!mapContainer) { + return; + } + prevCurSpriteRef.current = curSprite; + if (curSprite && prevCurSprite !== curSprite) { + Tool.removeSelectedEffect(); + } + if (curSprite) { + if (mode === MAP_MODE.OBSERVER_MODE) { + Tool.showSelectedEffect(curSprite) + setInsightVisible(true) + } + } else { + Tool.removeSelectedEffect(); + } + }, [curSprite]); + const prevCurSprite = prevCurSpriteRef.current; // watch spriteSettings useEffect(() => { @@ -256,6 +284,7 @@ setMode={setMode} dataFetched={dataFetched} curZone={curZone} + setCurSprite={setCurSprite} setSpriteSettings={setSpriteSettings} /> <Box sx={{ flexGrow: 1 }} /> @@ -326,7 +355,7 @@ )} <Select - value={mode} + value={mode ?? ''} onChange={(event) => { setMode(event.target.value); }} @@ -412,9 +441,11 @@ <Insight open={insightVisible} onCancel={() => { + setCurSprite(null); setInsightVisible(false); }} - width={378} + sprite={curSprite} + width={570} /> <Device -- Gitblit v1.9.1