import React, { useState, useRef, useEffect } from 'react';
|
import { useTranslate } from "react-admin";
|
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';
|
|
const Settings = (props) => {
|
const { open, onCancel, sprite, width = PAGE_DRAWER_WIDTH, title, setSpriteSettings } = 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 handleTabChange = (event, newValue) => {
|
setActiveTab(newValue);
|
};
|
|
return (
|
<>
|
<Drawer
|
variant="persistent"
|
open={open}
|
anchor="right"
|
onClose={handleClose}
|
sx={{ zIndex: 100, opacity: .8 }}
|
>
|
{open && (
|
<Box pt={12} width={{ xs: '100vW', sm: width }} height={'calc(100vh - 200px);'} mt={{ xs: 2, sm: 1 }} sx={{
|
}}>
|
<Stack direction="row" p={2}>
|
<Typography variant="h6" flex="1">
|
{sprite
|
? translate(`page.map.devices.${sprite?.data?.type?.toLowerCase()}`) + ' - ' + sprite?.data?.uuid
|
: translate('page.map.settings.title')}
|
</Typography>
|
<IconButton onClick={handleClose} size="small">
|
<CloseIcon />
|
</IconButton>
|
</Stack>
|
|
<Box p={3}>
|
<Card sx={{
|
transition: '0.3s',
|
boxShadow: themeMode === 'light'
|
? '0px 2px 8px rgba(0, 0, 0, 0.1)'
|
: '0px 2px 2px rgba(255, 255, 255, 0.1)',
|
'&:hover': {
|
boxShadow: themeMode === 'light'
|
? '0px 4px 16px rgba(0, 0, 0, 0.2)'
|
: '0px 4px 8px rgba(255, 255, 255, 0.2)',
|
},
|
borderRadius: '8px',
|
}}>
|
<CardContent>
|
<Tabs
|
value={activeTab}
|
onChange={handleTabChange}
|
indicatorColor="primary"
|
textColor="primary"
|
variant="fullWidth"
|
sx={{ mb: 0 }}
|
>
|
<Tab label={translate('page.map.settings.map.title')} />
|
<Tab label={translate('page.map.settings.config.title')} />
|
</Tabs>
|
|
<Divider />
|
|
<Box p={3}>
|
{activeTab === 0 && (
|
<MapSettings
|
sprite={sprite}
|
setSpriteSettings={setSpriteSettings}
|
onSubmit={() => {
|
}}
|
width={width}
|
lastCopiedSprites={lastCopiedSprites}
|
setLastCopiedSprites={setLastCopiedSprites}
|
/>
|
)}
|
{activeTab === 1 && (
|
<ConfigSettings
|
sprite={sprite}
|
onSubmit={() => {
|
}}
|
/>
|
)}
|
</Box>
|
</CardContent>
|
</Card>
|
</Box>
|
</Box>
|
)}
|
</Drawer>
|
</>
|
)
|
}
|
|
export default Settings;
|