| | |
| | | import PulseSignal from "../page/components/PulseSignal"; |
| | | import FakeFab from "./header/FakeFab"; |
| | | import RouteFab from "./header/RouteFab"; |
| | | import MoreOperate from "./header/MoreOperate"; |
| | | |
| | | let player; |
| | | let websocket; |
| | |
| | | const [deviceVisible, setDeviceVisible] = useState(false); |
| | | const [settingsVisible, setSettingsVisible] = useState(false); |
| | | const [batchSelectionVisible, setBatchSelectionVisible] = useState(false); |
| | | const [areaDrawing, setAreaDrawing] = useState(false); |
| | | |
| | | const [curSprite, setCurSprite] = useState(null); |
| | | const [batchSprites, setBatchSprites] = useState([]); |
| | |
| | | modeRef.current = mode; |
| | | |
| | | Tool.removeSelectedEffect(); |
| | | Tool.clearAreas(); |
| | | player.hideGridLines(); |
| | | |
| | | setInsightVisible(false); |
| | |
| | | |
| | | setCurSprite(null); |
| | | setBatchSprites([]); |
| | | |
| | | player.deactivateMapMultiSelect(); |
| | | |
| | | switch (mode) { |
| | | case MAP_MODE.OBSERVER_MODE: |
| | |
| | | mapContainer.children.forEach(child => { |
| | | Tool.beSettings(child, setCurSprite); |
| | | }) |
| | | break |
| | | case MAP_MODE.AREA_MODE: |
| | | Tool.removeAgvGraphics(); |
| | | |
| | | Tool.loadAreas(curZone, setCurSprite); |
| | | break |
| | | default: |
| | | break |
| | |
| | | <Button variant="contained" color="primary"> |
| | | {translate('page.map.action.monitor')} |
| | | </Button> |
| | | <MoreOperate /> |
| | | </> |
| | | )} |
| | | |
| | |
| | | </> |
| | | )} |
| | | |
| | | {mode === MAP_MODE.AREA_MODE && ( |
| | | <> |
| | | <Button |
| | | variant={areaDrawing ? "outlined" : "contained"} |
| | | color="primary" |
| | | sx={{}} |
| | | disabled={areaDrawing} |
| | | onClick={() => { |
| | | const started = Tool.startAreaDrawing({ |
| | | promptText: translate('page.map.prompt.areaName'), |
| | | onComplete: ({ name, start, end, color }) => { |
| | | if (name) { |
| | | Http.saveAreaData(curZone, { name, start, end, color }); |
| | | notify.success(translate('page.map.msg.areaCreated', { name })); |
| | | } |
| | | }, |
| | | onFinish: () => { |
| | | setAreaDrawing(false); |
| | | }, |
| | | setCurSprite, |
| | | }); |
| | | if (started) { |
| | | setAreaDrawing(true); |
| | | } |
| | | }} |
| | | > |
| | | {translate('page.map.action.addArea')} |
| | | </Button> |
| | | </> |
| | | )} |
| | | |
| | | <Select |
| | | value={mode ?? ''} |
| | | onChange={(event) => { |
| | |
| | | <MenuItem value={MAP_MODE.OBSERVER_MODE}>{translate('page.map.mode.observer')}</MenuItem> |
| | | <MenuItem value={MAP_MODE.MOVABLE_MODE}>{translate('page.map.mode.movable')}</MenuItem> |
| | | <MenuItem value={MAP_MODE.SETTINGS_MODE}>{translate('page.map.mode.settings')}</MenuItem> |
| | | <MenuItem value={MAP_MODE.AREA_MODE}>{translate('page.map.mode.area')}</MenuItem> |
| | | </Select> |
| | | </Box> |
| | | {/* content */} |
| | |
| | | <FakeFab /> |
| | | </> |
| | | )} |
| | | <Fab |
| | | variant="extended" |
| | | color="primary" |
| | | size="small" |
| | | onClick={() => { |
| | | player.flipMapHorizontally(); |
| | | }} |
| | | > |
| | | <Flip /> |
| | | {translate('page.map.action.flip')} |
| | | </Fab> |
| | | <Fab |
| | | variant="extended" |
| | | color="primary" |