| | |
| | | import React, { useState, useRef, useEffect } from 'react'; |
| | | import React, { useState, useEffect } from 'react'; |
| | | import { useTranslate } from "react-admin"; |
| | | import { Drawer, Box, Typography, Tabs, Tab, IconButton, Stack, useTheme, Card, CardContent, Divider } from '@mui/material'; |
| | | import { |
| | | Drawer, |
| | | Box, |
| | | Typography, |
| | | Tabs, |
| | | Tab, |
| | | IconButton, |
| | | Stack, |
| | | useTheme, |
| | | Card, |
| | | CardContent, |
| | | Divider, |
| | | } from '@mui/material'; |
| | | import CloseIcon from '@mui/icons-material/Close'; |
| | | import { PAGE_DRAWER_WIDTH } from '@/config/setting'; |
| | | import MapSettings from './MapSettings'; |
| | | import ConfigSettings from './ConfigSettings'; |
| | | import AreaBasicTab from './AreaBasicTab'; |
| | | import AreaAdvancedTab from './AreaAdvancedTab'; |
| | | |
| | | const AreaSettings = (props) => { |
| | | const { open, onCancel, sprite, width = PAGE_DRAWER_WIDTH, title, setSpriteSettings } = props; |
| | | const { open, onCancel, sprite, width = PAGE_DRAWER_WIDTH } = props; |
| | | const theme = useTheme(); |
| | | const themeMode = theme.palette.mode; |
| | | const translate = useTranslate(); |
| | | |
| | | const [lastCopiedSprites, setLastCopiedSprites] = useState([]); |
| | | |
| | | const handleClose = () => { |
| | | onCancel(); |
| | | } |
| | | |
| | | const [activeTab, setActiveTab] = useState(0); |
| | | const [areaName, setAreaName] = useState(''); |
| | | const [agvList, setAgvList] = useState(''); |
| | | const [barcodeList, setBarcodeList] = useState(''); |
| | | const [areaCode, setAreaCode] = useState(''); |
| | | const [maxQty, setMaxQty] = useState(''); |
| | | const [speedLimit, setSpeedLimit] = useState(''); |
| | | const [shapeData, setShapeData] = useState(''); |
| | | const [priority, setPriority] = useState(''); |
| | | |
| | | useEffect(() => { |
| | | if (sprite?.data) { |
| | | setAreaName(sprite.data.name || ''); |
| | | setAreaCode(sprite.data.code || ''); |
| | | setMaxQty(sprite.data.maxQty || ''); |
| | | setSpeedLimit(sprite.data.speedLimit || ''); |
| | | setShapeData(sprite.data.shape || ''); |
| | | setPriority(sprite.data.priority || ''); |
| | | setAgvList((sprite.data.agvs || []).join(', ')); |
| | | setBarcodeList((sprite.data.barcodes || []).join('\n')); |
| | | } else { |
| | | setAreaName(''); |
| | | setAreaCode(''); |
| | | setMaxQty(''); |
| | | setSpeedLimit(''); |
| | | setShapeData(''); |
| | | setPriority(''); |
| | | setAgvList(''); |
| | | setBarcodeList(''); |
| | | } |
| | | }, [sprite]); |
| | | |
| | | const handleTabChange = (event, newValue) => { |
| | | setActiveTab(newValue); |
| | | }; |
| | | |
| | | const handleSaveBasic = () => { |
| | | // placeholder for save logic |
| | | }; |
| | | |
| | | const handleSaveAdvanced = () => { |
| | | // placeholder for save logic |
| | | }; |
| | | |
| | | return ( |
| | |
| | | variant="fullWidth" |
| | | sx={{ mb: 0 }} |
| | | > |
| | | <Tab label={translate('page.map.settings.map.title')} /> |
| | | <Tab label={translate('page.map.settings.config.title')} /> |
| | | <Tab label={translate('page.map.area.basic', { _: '基础' })} /> |
| | | <Tab label={translate('page.map.area.advanced', { _: '高级' })} /> |
| | | </Tabs> |
| | | |
| | | <Divider /> |
| | | |
| | | <Box p={3}> |
| | | {activeTab === 0 && ( |
| | | <MapSettings |
| | | sprite={sprite} |
| | | setSpriteSettings={setSpriteSettings} |
| | | onSubmit={() => { |
| | | }} |
| | | width={width} |
| | | lastCopiedSprites={lastCopiedSprites} |
| | | setLastCopiedSprites={setLastCopiedSprites} |
| | | <AreaBasicTab |
| | | areaName={areaName} |
| | | setAreaName={setAreaName} |
| | | agvList={agvList} |
| | | setAgvList={setAgvList} |
| | | barcodeList={barcodeList} |
| | | setBarcodeList={setBarcodeList} |
| | | onSave={handleSaveBasic} |
| | | /> |
| | | )} |
| | | {activeTab === 1 && ( |
| | | <ConfigSettings |
| | | sprite={sprite} |
| | | onSubmit={() => { |
| | | }} |
| | | <AreaAdvancedTab |
| | | areaCode={areaCode} |
| | | setAreaCode={setAreaCode} |
| | | maxQty={maxQty} |
| | | setMaxQty={setMaxQty} |
| | | speedLimit={speedLimit} |
| | | setSpeedLimit={setSpeedLimit} |
| | | shapeData={shapeData} |
| | | setShapeData={setShapeData} |
| | | priority={priority} |
| | | setPriority={setPriority} |
| | | onSave={handleSaveAdvanced} |
| | | /> |
| | | )} |
| | | </Box> |
| | |
| | | ) |
| | | } |
| | | |
| | | export default AreaSettings; |
| | | export default AreaSettings; |