From cc91a835ff9fbf3e9e33ac5a9ea51432f9f3bf24 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期四, 10 十月 2024 16:11:01 +0800 Subject: [PATCH] # --- zy-acs-flow/src/map/settings/MapSettings.jsx | 193 ++++++++++++++++++++++++++++++++++++------------ 1 files changed, 144 insertions(+), 49 deletions(-) diff --git a/zy-acs-flow/src/map/settings/MapSettings.jsx b/zy-acs-flow/src/map/settings/MapSettings.jsx index 30e5a33..f482e67 100644 --- a/zy-acs-flow/src/map/settings/MapSettings.jsx +++ b/zy-acs-flow/src/map/settings/MapSettings.jsx @@ -11,18 +11,22 @@ MenuItem, InputLabel, FormControl, - FormHelperText, - Checkbox, - FormControlLabel, Stack, + Divider, } from '@mui/material'; +import MuiInput from '@mui/material/Input'; +import { styled } from '@mui/material/styles'; import { useTranslate } from 'react-admin'; + +const Input = styled(MuiInput)` + width: 42px; +`; const MapSettings = (props) => { const { sprite, onSubmit } = props; const translate = useTranslate(); - const { control, handleSubmit, reset, watch, setValue } = useForm({ + const { control, handleSubmit, reset, watch } = useForm({ defaultValues: { x: sprite?.position.x || 0, y: sprite?.position.y || 0, @@ -35,7 +39,7 @@ }, }); - // 鐩戝惉琛ㄥ崟鍊肩殑鍙樺寲 + // 鐩戝惉鎵�鏈夊瓧娈电殑鍙樺寲 const watchAllFields = watch(); useEffect(() => { @@ -71,14 +75,28 @@ } }; + // 鏃嬭浆婊戝潡鐨勫埢搴� + const rotationMarks = [ + { value: 0, label: '0掳' }, + { value: 90, label: '90掳' }, + { value: 180, label: '180掳' }, + { value: 270, label: '270掳' }, + { value: 360, label: '360掳' }, + ]; + return ( - <Box component="form" onSubmit={handleSubmit(onFormSubmit)} noValidate sx={{ mt: 2 }}> + <Box component="form" onSubmit={handleSubmit(onFormSubmit)} noValidate sx={{ mt: 0 }}> <Grid container spacing={2}> {/* 浣嶇疆 */} - <Grid item xs={2}> - <Typography variant="h6">{translate('page.map.settings.map.base.position')}</Typography> + <Grid item xs={12}> + <Typography variant="inherit"> + {translate('page.map.settings.map.base.position')} + </Typography> </Grid> - <Grid item xs={5}> + <Grid item xs={6} pt={0} sx={{ + paddingTop: '8px !important', + paddingLeft: '8px !important', + }}> <Controller name="x" control={control} @@ -89,14 +107,20 @@ type="number" fullWidth onChange={(e) => { + const value = parseFloat(e.target.value); field.onChange(e); - updateSprite({ ...watchAllFields, x: parseFloat(e.target.value) }); + if (!isNaN(value)) { + updateSprite({ ...watchAllFields, x: value }); + } }} /> )} /> </Grid> - <Grid item xs={5}> + <Grid item xs={6} sx={{ + paddingTop: '8px !important', + paddingLeft: '8px !important', + }}> <Controller name="y" control={control} @@ -107,8 +131,11 @@ type="number" fullWidth onChange={(e) => { + const value = parseFloat(e.target.value); field.onChange(e); - updateSprite({ ...watchAllFields, y: parseFloat(e.target.value) }); + if (!isNaN(value)) { + updateSprite({ ...watchAllFields, y: value }); + } }} /> )} @@ -116,42 +143,56 @@ </Grid> {/* 缂╂斁 */} - <Grid item xs={2}> - <Typography variant="h6">{translate('page.map.settings.map.base.scale')}</Typography> + <Grid item xs={12}> + <Typography variant="inherit"> + {translate('page.map.settings.map.base.scale')} + </Typography> </Grid> - <Grid item xs={5}> + <Grid item xs={6} sx={{ + paddingTop: '8px !important', + paddingLeft: '8px !important', + }}> <Controller name="scaleX" control={control} render={({ field }) => ( <TextField {...field} - label="Scale X" + label="X" type="number" fullWidth inputProps={{ step: 0.1, min: 0.1, max: 10 }} onChange={(e) => { + const value = parseFloat(e.target.value); field.onChange(e); - updateSprite({ ...watchAllFields, scaleX: parseFloat(e.target.value) }); + if (!isNaN(value)) { + updateSprite({ ...watchAllFields, scaleX: value }); + } }} /> )} /> </Grid> - <Grid item xs={5}> + <Grid item xs={6} sx={{ + paddingTop: '8px !important', + paddingLeft: '8px !important', + }}> <Controller name="scaleY" control={control} render={({ field }) => ( <TextField {...field} - label="Scale Y" + label="Y" type="number" fullWidth inputProps={{ step: 0.1, min: 0.1, max: 10 }} onChange={(e) => { + const value = parseFloat(e.target.value); field.onChange(e); - updateSprite({ ...watchAllFields, scaleY: parseFloat(e.target.value) }); + if (!isNaN(value)) { + updateSprite({ ...watchAllFields, scaleY: value }); + } }} /> )} @@ -159,51 +200,105 @@ </Grid> {/* 鏃嬭浆 */} - <Grid item xs={2}> - <Typography variant="h6">{translate('page.map.settings.map.base.rotation')}</Typography> + <Grid item xs={12}> + <Typography variant="inherit"> + {translate('page.map.settings.map.base.rotation')} + </Typography> </Grid> - <Grid item xs={10}> - <Controller - name="rotation" - control={control} - render={({ field }) => ( - <Slider - {...field} - min={0} - max={360} - step={1} - valueLabelDisplay="auto" - onChange={(e, value) => { - field.onChange(value); - updateSprite({ ...watchAllFields, rotation: value }); - }} + <Grid item xs={12}> + <Box display="flex" alignItems="center"> + <Box flex={1} mr={2}> + <Controller + name="rotation" + control={control} + render={({ field }) => ( + <Slider + {...field} + size="small" + min={0} + max={360} + step={1} + valueLabelDisplay="auto" + valueLabelFormat={(value) => `${value}掳`} + onChange={(e, value) => { + field.onChange(value); + updateSprite({ ...watchAllFields, rotation: value }); + }} + /> + )} /> - )} - /> + </Box> + <Box width={80}> + <Controller + name="rotation" + control={control} + render={({ field }) => ( + <TextField + {...field} + label="" + type="number" + fullWidth + inputProps={{ min: 0, max: 360 }} + onChange={(e) => { + const value = parseFloat(e.target.value); + if (!isNaN(value)) { + field.onChange(value); + updateSprite({ ...watchAllFields, rotation: value }); + } + }} + /> + )} + /> + </Box> + </Box> + </Grid> + <Grid item xs={12}> + <Divider /> </Grid> {/* 澶嶅埗 */} - <Grid item xs={2}> - <Typography variant="h6">{translate('page.map.settings.map.copy.title')}</Typography> + <Grid item xs={12}> + <Typography variant="inherit"> + {translate('page.map.settings.map.copy.title')} + </Typography> </Grid> - <Grid item xs={5}> + <Grid item xs={6} sx={{ + paddingTop: '8px !important', + paddingLeft: '8px !important', + }}> <Controller name="copyDirection" control={control} render={({ field }) => ( <FormControl fullWidth> - <InputLabel>{translate('page.map.settings.map.copy.direction')}</InputLabel> - <Select {...field} label={translate('page.map.settings.map.copy.direction')}> - <MenuItem value="left">{translate('page.map.settings.map.copy.left')}</MenuItem> - <MenuItem value="right">{translate('page.map.settings.map.copy.right')}</MenuItem> - <MenuItem value="up">{translate('page.map.settings.map.copy.up')}</MenuItem> - <MenuItem value="down">{translate('page.map.settings.map.copy.down')}</MenuItem> + <InputLabel> + {translate('page.map.settings.map.copy.direction')} + </InputLabel> + <Select + {...field} + label={translate('page.map.settings.map.copy.direction')} + > + <MenuItem value="left"> + {translate('page.map.settings.map.copy.left')} + </MenuItem> + <MenuItem value="right"> + {translate('page.map.settings.map.copy.right')} + </MenuItem> + <MenuItem value="up"> + {translate('page.map.settings.map.copy.up')} + </MenuItem> + <MenuItem value="down"> + {translate('page.map.settings.map.copy.down')} + </MenuItem> </Select> </FormControl> )} /> </Grid> - <Grid item xs={5}> + <Grid item xs={6} sx={{ + paddingTop: '8px !important', + paddingLeft: '8px !important', + }}> <Controller name="copyCount" control={control} -- Gitblit v1.9.1