|  |  | 
 |  |  | import React, { useState, useEffect } from 'react'; | 
 |  |  | import { Draggable } from '@hello-pangea/dnd'; | 
 |  |  | import { Box, Card, Typography } from '@mui/material'; | 
 |  |  | import { ReferenceField, useRedirect } from 'react-admin'; | 
 |  |  | import { Box, Card, Typography, Avatar, Divider, Stack, Slider, useTheme } from '@mui/material'; | 
 |  |  | import { ReferenceField, useRedirect, useTranslate } from 'react-admin'; | 
 |  |  | import { blueGrey } from '@mui/material/colors'; | 
 |  |  | import { styled } from '@mui/material/styles'; | 
 |  |  |  | 
 |  |  | export const MissionCard = ({ mission, index }) => { | 
 |  |  |     if (!mission) return null; | 
 |  |  | 
 |  |  |     ); | 
 |  |  | }; | 
 |  |  |  | 
 |  |  | export const MissionCardContent = ({ provided, snapshot, mission, }) => { | 
 |  |  | export const MissionCardContent = ({ provided, snapshot, mission }) => { | 
 |  |  |     const theme = useTheme(); | 
 |  |  |     const translate = useTranslate(); | 
 |  |  |     const redirect = useRedirect(); | 
 |  |  |     const handleClick = () => { | 
 |  |  |         redirect(`/mission/${mission.id}/show`, undefined, undefined, undefined, { | 
 |  |  |             _scrollToTop: false, | 
 |  |  |         }); | 
 |  |  |     }; | 
 |  |  |  | 
 |  |  |     const [sliderValue, setSliderValue] = useState(mission.progress || 0); | 
 |  |  |  | 
 |  |  |     useEffect(() => { | 
 |  |  |         setSliderValue(mission.progress || 0); | 
 |  |  |     }, [mission.progress]); | 
 |  |  |  | 
 |  |  |     const handleSliderChange = (event, newValue) => { | 
 |  |  |         setSliderValue(newValue); | 
 |  |  |     }; | 
 |  |  |  | 
 |  |  |     return ( | 
 |  |  | 
 |  |  |                 style={{ | 
 |  |  |                     opacity: snapshot?.isDragging ? 0.9 : 1, | 
 |  |  |                     transform: snapshot?.isDragging ? 'rotate(-2deg)' : '', | 
 |  |  |                     transition: '0.3s', | 
 |  |  |                 }} | 
 |  |  |                 elevation={snapshot?.isDragging ? 3 : 1} | 
 |  |  |             > | 
 |  |  |                 <Box padding={1} display="flex"> | 
 |  |  |                     <ReferenceField | 
 |  |  |                         source="company_id" | 
 |  |  |                         record={mission} | 
 |  |  |                         reference="companies" | 
 |  |  |                         link={false} | 
 |  |  |                     > | 
 |  |  |                     </ReferenceField> | 
 |  |  |                     <Box sx={{ marginLeft: 1 }}> | 
 |  |  |                         <Typography variant="body2" gutterBottom> | 
 |  |  |                 <Box padding={2} pb={1} display="flex" flexDirection="column"> | 
 |  |  |                     <Box display="flex" alignItems="center" mb={1.5}> | 
 |  |  |                         <Avatar | 
 |  |  |                             sx={{ | 
 |  |  |                                 width: 30, | 
 |  |  |                                 height: 30, | 
 |  |  |                                 bgcolor: theme.palette.primary.main, | 
 |  |  |                             }} | 
 |  |  |                         > | 
 |  |  |                             {mission.agv} | 
 |  |  |                         </Avatar> | 
 |  |  |                         <Divider orientation="vertical" flexItem sx={{ margin: '0 8px' }} /> | 
 |  |  |                         <Typography variant="body1" noWrap> | 
 |  |  |                             {mission.groupNo} | 
 |  |  |                         </Typography> | 
 |  |  |                         <Typography variant="caption" color="textSecondary"> | 
 |  |  |                             {mission.posType} | 
 |  |  |                         </Typography> | 
 |  |  |                     </Box> | 
 |  |  |                     <Box> | 
 |  |  |                         <Stack direction="row" justifyContent="space-between" mb={1}> | 
 |  |  |                             <Typography variant="caption" color="textSecondary"> | 
 |  |  |                                 {translate('table.field.mission.backpack')} : {mission.backpack} | 
 |  |  |                             </Typography> | 
 |  |  |                             <Typography variant="caption" color="textPrimary"> | 
 |  |  |                                 {translate('table.field.mission.code')}: {mission.currCode} | 
 |  |  |                             </Typography> | 
 |  |  |                         </Stack> | 
 |  |  |                         <Divider orientation="horizontal" flexItem /> | 
 |  |  |                         <Stack direction="row" justifyContent="space-between" > | 
 |  |  |                             <Typography variant="overline"> | 
 |  |  |                                 {translate('table.field.mission.task')}: [{mission.taskNos.join(',')}] | 
 |  |  |                             </Typography> | 
 |  |  |                         </Stack> | 
 |  |  |                         <Stack pl={0.5} pr={0.5} direction="row" spacing={1} alignItems="center" mb={.6}> | 
 |  |  |                             <Slider | 
 |  |  |                                 aria-label="Progress" | 
 |  |  |                                 // defaultValue={mission.progress} | 
 |  |  |                                 value={sliderValue} | 
 |  |  |                                 onChange={handleSliderChange} | 
 |  |  |                                 getAriaValueText={(value) => { | 
 |  |  |                                     return `${value}%`; | 
 |  |  |                                 }} | 
 |  |  |                                 color="secondary" | 
 |  |  |                                 size="small" | 
 |  |  |                                 marks | 
 |  |  |                             /> | 
 |  |  |                         </Stack> | 
 |  |  |                     </Box> | 
 |  |  |                 </Box> | 
 |  |  |             </Card> |