From 7fb7d2233d0bbe03871dd01c35433601efe0c865 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 16 十月 2024 08:56:43 +0800 Subject: [PATCH] # --- zy-acs-flow/src/map/MapPage.jsx | 40 +++++++++++++++++++++++++++++++++++----- 1 files changed, 35 insertions(+), 5 deletions(-) diff --git a/zy-acs-flow/src/map/MapPage.jsx b/zy-acs-flow/src/map/MapPage.jsx index cd0d328..45ea3bb 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,9 +89,12 @@ 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); + }); } - setDataFetched(true); + setTimeout(() => { player.adaptScreen(); notify.info(translate('page.map.welcome')); @@ -139,6 +145,9 @@ setBatchSprites(selectedSprites); }); + mapContainer.children.forEach(child => { + Tool.beInsight(child, setCurSprite); + }) break case MAP_MODE.MOVABLE_MODE: player.showGridLines(); @@ -187,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(() => { @@ -325,7 +354,7 @@ )} <Select - value={mode} + value={mode ?? ''} onChange={(event) => { setMode(event.target.value); }} @@ -413,7 +442,8 @@ onCancel={() => { setInsightVisible(false); }} - width={378} + sprite={curSprite} + width={570} /> <Device -- Gitblit v1.9.1