zhang
2025-05-20 1313906bb1eb983d3beece810035e7fc28d6a92f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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;