| | |
| | | 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); |
| | | setDeviceVisible(false); |
| | | setSettingsVisible(false); |
| | | setBatchSelectionVisible(false); |
| | | setAreaDrawing(false); |
| | | Tool.cancelAreaDrawing(); |
| | | |
| | | setCurSprite(null); |
| | | setBatchSprites([]); |
| | | |
| | | player.deactivateMapMultiSelect(); |
| | | |
| | | switch (mode) { |
| | | case MAP_MODE.OBSERVER_MODE: |
| | |
| | | Tool.beSettings(child, setCurSprite); |
| | | }) |
| | | break |
| | | case MAP_MODE.ZONING_MODE: |
| | | case MAP_MODE.AREA_MODE: |
| | | Tool.removeAgvGraphics(); |
| | | |
| | | Tool.loadAreas(curZone, setCurSprite); |
| | | break |
| | | default: |
| | | break |
| | |
| | | setInsightVisible(true); |
| | | } |
| | | if (mode === MAP_MODE.SETTINGS_MODE) { |
| | | Tool.showSelectedEffect(curSprite); |
| | | setSettingsVisible(true); |
| | | } |
| | | if (mode === MAP_MODE.AREA_MODE) { |
| | | Tool.showSelectedEffect(curSprite); |
| | | setSettingsVisible(true); |
| | | } |
| | |
| | | </> |
| | | )} |
| | | |
| | | {mode === MAP_MODE.ZONING_MODE && ( |
| | | {mode === MAP_MODE.AREA_MODE && ( |
| | | <> |
| | | <Button |
| | | variant={areaDrawing ? "outlined" : "contained"} |
| | | color="primary" |
| | | sx={{}} |
| | | disabled={areaDrawing} |
| | | onClick={() => { |
| | | setCurSprite(null); |
| | | 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> |
| | | </> |
| | | )} |
| | | |
| | |
| | | <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.ZONING_MODE}>{translate('page.map.mode.zoning')}</MenuItem> |
| | | <MenuItem value={MAP_MODE.AREA_MODE}>{translate('page.map.mode.area')}</MenuItem> |
| | | </Select> |
| | | </Box> |
| | | {/* content */} |