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 | 52 ++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 38 insertions(+), 14 deletions(-) diff --git a/zy-acs-flow/src/map/MapPage.jsx b/zy-acs-flow/src/map/MapPage.jsx index 73f59a0..cfbd71f 100644 --- a/zy-acs-flow/src/map/MapPage.jsx +++ b/zy-acs-flow/src/map/MapPage.jsx @@ -48,12 +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([]); @@ -64,6 +67,7 @@ }); const handleResize = () => { + if (!contentRef) { return; } const width = contentRef.current.offsetWidth; const height = contentRef.current.offsetHeight; player.resize(width, height); @@ -85,7 +89,10 @@ 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(() => { @@ -138,6 +145,9 @@ setBatchSprites(selectedSprites); }); + mapContainer.children.forEach(child => { + Tool.beInsight(child, setCurSprite); + }) break case MAP_MODE.MOVABLE_MODE: player.showGridLines(); @@ -186,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(() => { @@ -252,19 +282,11 @@ <MapSearch mode={mode} setMode={setMode} + dataFetched={dataFetched} curZone={curZone} + setCurSprite={setCurSprite} setSpriteSettings={setSpriteSettings} /> - {/* <TextField - variant="outlined" - size="small" - placeholder="鎼滅储..." - sx={{ - width: '200px', - backgroundColor: theme.palette.background.paper, - borderRadius: 1, - }} - /> */} <Box sx={{ flexGrow: 1 }} /> {mode === MAP_MODE.OBSERVER_MODE && ( @@ -333,7 +355,7 @@ )} <Select - value={mode} + value={mode ?? ''} onChange={(event) => { setMode(event.target.value); }} @@ -419,9 +441,11 @@ <Insight open={insightVisible} onCancel={() => { + setCurSprite(null); setInsightVisible(false); }} - width={378} + sprite={curSprite} + width={570} /> <Device -- Gitblit v1.9.1