| | |
| | | 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([]); |
| | |
| | | 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(); |
| | |
| | | setBatchSprites(selectedSprites); |
| | | }); |
| | | |
| | | mapContainer.children.forEach(child => { |
| | | Tool.beInsight(child, setCurSprite); |
| | | }) |
| | | break |
| | | case MAP_MODE.MOVABLE_MODE: |
| | | player.showGridLines(); |
| | |
| | | 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(() => { |
| | |
| | | )} |
| | | |
| | | <Select |
| | | value={mode} |
| | | value={mode ?? ''} |
| | | onChange={(event) => { |
| | | setMode(event.target.value); |
| | | }} |
| | |
| | | onCancel={() => { |
| | | setInsightVisible(false); |
| | | }} |
| | | width={378} |
| | | sprite={curSprite} |
| | | width={570} |
| | | /> |
| | | |
| | | <Device |