From d69e981de04bce23f1963f2e2a7c8c47bb26eceb Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期三, 10 十二月 2025 08:29:57 +0800
Subject: [PATCH] #
---
zy-acs-flow/src/map/MapPage.jsx | 51 ++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 40 insertions(+), 11 deletions(-)
diff --git a/zy-acs-flow/src/map/MapPage.jsx b/zy-acs-flow/src/map/MapPage.jsx
index cc606e9..044df1d 100644
--- a/zy-acs-flow/src/map/MapPage.jsx
+++ b/zy-acs-flow/src/map/MapPage.jsx
@@ -25,6 +25,7 @@
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;
@@ -48,6 +49,7 @@
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([]);
@@ -124,6 +126,7 @@
modeRef.current = mode;
Tool.removeSelectedEffect();
+ Tool.clearAreas();
player.hideGridLines();
setInsightVisible(false);
@@ -166,6 +169,11 @@
mapContainer.children.forEach(child => {
Tool.beSettings(child, setCurSprite);
})
+ break
+ case MAP_MODE.AREA_MODE:
+ Tool.removeAgvGraphics();
+
+ Tool.loadAreas(curZone);
break
default:
break
@@ -285,6 +293,7 @@
<Button variant="contained" color="primary">
{translate('page.map.action.monitor')}
</Button>
+ <MoreOperate />
</>
)}
@@ -338,6 +347,36 @@
</>
)}
+ {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);
+ }
+ });
+ if (started) {
+ setAreaDrawing(true);
+ }
+ }}
+ >
+ {translate('page.map.action.addArea')}
+ </Button>
+ </>
+ )}
+
<Select
value={mode ?? ''}
onChange={(event) => {
@@ -355,6 +394,7 @@
<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 */}
@@ -419,17 +459,6 @@
<FakeFab />
</>
)}
- <Fab
- variant="extended"
- color="primary"
- size="small"
- onClick={() => {
- player.flipMapHorizontally();
- }}
- >
- <Flip />
- {translate('page.map.action.flip')}
- </Fab>
<Fab
variant="extended"
color="primary"
--
Gitblit v1.9.1