|  |  |  | 
|---|
|  |  |  | 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, { | 
|---|
|  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | console.log(mission); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const [sliderValue, setSliderValue] = useState(mission.progress || 0); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | useEffect(() => { | 
|---|
|  |  |  | setSliderValue(mission.progress || 0); | 
|---|
|  |  |  | }, [mission.progress]); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const handleSliderChange = (event, newValue) => { | 
|---|
|  |  |  | setSliderValue(newValue); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | <Box | 
|---|
|  |  |  | 
|---|
|  |  |  | 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> | 
|---|