#
vincentlu
2026-01-10 1bc33546a044cbc84dd9595c19dbcd9a4e309fc9
zy-acs-flow/src/map/MapPage.jsx
@@ -14,6 +14,7 @@
import { NotificationProvider, useNotification } from './Notification';
import Insight from "./insight";
import Device from "./Device";
import AreaList from "./AreaList";
import Settings from "./settings";
import Batch from "./batch";
import AreaSettings from "./areaSettings";
@@ -52,6 +53,7 @@
    const [settingsVisible, setSettingsVisible] = useState(false);
    const [batchSelectionVisible, setBatchSelectionVisible] = useState(false);
    const [areaSettingsVisible, setAreaSettingsVisible] = useState(false);
    const [areaListVisible, setAreaListVisible] = useState(false);
    const [areaDrawing, setAreaDrawing] = useState(false);
    const [curSprite, setCurSprite] = useState(null);
@@ -139,6 +141,7 @@
        setBatchSelectionVisible(false);
        setAreaSettingsVisible(false);
        setAreaDrawing(false);
        setAreaListVisible(false);
        Tool.cancelAreaDrawing();
        Tool.hideAreas(curZone, setShowAreas);
@@ -215,6 +218,7 @@
        if (!mapContainer) {
            return;
        }
        setAreaListVisible(false);
        Tool.removeSelectedEffect();
        if (curSprite) {
            if (mode === MAP_MODE.OBSERVER_MODE) {
@@ -365,11 +369,21 @@
                {mode === MAP_MODE.AREA_MODE && (
                    <>
                        <Button
                            variant={areaDrawing ? "outlined" : "contained"}
                            color="primary"
                            sx={{}}
                            disabled={areaDrawing}
                            variant="outlined"
                            onClick={() => setAreaListVisible(!areaListVisible)}
                            sx={{ mr: 2 }}
                        >
                            {translate('page.map.action.areaList')}
                        </Button>
                        <Button
                            variant="contained"
                            color={areaDrawing ? "error" : "primary"}
                            onClick={() => {
                                if (areaDrawing) {
                                    Tool.cancelAreaDrawing();
                                    setAreaDrawing(false);
                                    return;
                                }
                                setCurSprite(null);
                                const started = Tool.startAreaDrawing({
                                    promptText: translate('page.map.area.prompt.nameInput'),
@@ -392,7 +406,9 @@
                                }
                            }}
                        >
                            {translate('page.map.action.addArea')}
                            {areaDrawing
                                ? translate('page.map.action.cancelAddArea')
                                : translate('page.map.action.addArea')}
                        </Button>
                    </>
                )}
@@ -562,6 +578,14 @@
                width={570}
            />
            <AreaList
                zoneId={curZone}
                open={areaListVisible}
                onClose={() => setAreaListVisible(false)}
                setCurSprite={setCurSprite}
                width={378}
            />
        </Box>
    );
}