| | |
| | | import * as React from 'react'; |
| | | import { FC, createElement } from 'react'; |
| | | import { Card, Box, Typography, Divider } from '@mui/material'; |
| | | import { Card, Box, Typography, Divider, Stack } from '@mui/material'; |
| | | import { useTranslate } from 'react-admin'; |
| | | |
| | | import { Link } from 'react-router-dom'; |
| | | |
| | | const CardWithIcon = ({ icon, title, subtitle, to, children }) => ( |
| | | <Card |
| | | sx={{ |
| | | minHeight: 52, |
| | | display: 'flex', |
| | | flexDirection: 'column', |
| | | flex: '1', |
| | | '& a': { |
| | | textDecoration: 'none', |
| | | color: 'inherit', |
| | | }, |
| | | }} |
| | | > |
| | | <Box |
| | | const CardWithIcon = ({ icon, title, subtitle, to, children, statistic, type }) => { |
| | | const translate = useTranslate(); |
| | | return ( |
| | | <Card |
| | | sx={{ |
| | | position: 'relative', |
| | | overflow: 'hidden', |
| | | padding: '16px', |
| | | display: 'flex', |
| | | justifyContent: 'space-between', |
| | | alignItems: 'center', |
| | | '& .icon': { |
| | | color: 'primary.main', |
| | | }, |
| | | '&:before': { |
| | | position: 'absolute', |
| | | top: '50%', |
| | | left: 0, |
| | | display: 'block', |
| | | content: `''`, |
| | | height: '200%', |
| | | aspectRatio: '1', |
| | | transform: 'translate(-30%, -60%)', |
| | | borderRadius: '50%', |
| | | backgroundColor: 'primary.main', |
| | | opacity: 0.15, |
| | | width: '100%', |
| | | minHeight: 52, |
| | | flexDirection: 'column', |
| | | flex: '1', |
| | | '& a': { |
| | | textDecoration: 'none', |
| | | color: 'inherit', |
| | | }, |
| | | }} |
| | | > |
| | | <Box width="3em" className="icon"> |
| | | {createElement(icon, { fontSize: 'large' })} |
| | | <Box |
| | | sx={{ |
| | | position: 'relative', |
| | | overflow: 'hidden', |
| | | padding: '16px', |
| | | display: 'flex', |
| | | justifyContent: 'space-between', |
| | | alignItems: 'center', |
| | | '& .icon': { |
| | | color: 'primary.main', |
| | | }, |
| | | '&:before': { |
| | | position: 'absolute', |
| | | top: '50%', |
| | | left: 0, |
| | | display: 'block', |
| | | content: `''`, |
| | | height: '200%', |
| | | aspectRatio: '1', |
| | | transform: 'translate(-30%, -60%)', |
| | | borderRadius: '50%', |
| | | backgroundColor: 'primary.main', |
| | | opacity: 0.15, |
| | | }, |
| | | }} |
| | | > |
| | | <Box width="3em" className="icon"> |
| | | {createElement(icon, { fontSize: 'large' })} |
| | | </Box> |
| | | <Box textAlign="right"> |
| | | <Typography variant="h5" component="h2"> |
| | | {subtitle || ' '} |
| | | </Typography> |
| | | {type ? <Box sx={{ display: "flex" }}> |
| | | <Box sx={{ display: 'flex', padding: '1em' }}> |
| | | <Typography color="textSecondary">{translate("page.dashboard.header.planQty")}:</Typography> |
| | | <Typography color="textSecondary">{statistic?.inAnf}</Typography> |
| | | </Box> |
| | | {!children && <Box sx={{ display: "flex" }}> |
| | | <Box sx={{ display: 'flex', padding: '1em' }}> |
| | | <Typography color="textSecondary">{translate("page.dashboard.header.realQty")}:</Typography> |
| | | <Typography color="textSecondary">{statistic?.taskIn}</Typography> |
| | | </Box> |
| | | <Box sx={{ display: 'flex', padding: '1em' }}> |
| | | <Typography color="textSecondary">{type == 'in' ? translate("page.dashboard.header.waitQty") : translate("page.dashboard.header.waitOutQty")}:</Typography> |
| | | <Typography color="textSecondary">{type == 'in' ? statistic?.taskIn : statistic?.taskOut}</Typography> |
| | | </Box> |
| | | </Box>} |
| | | </Box> : <Box> |
| | | <Typography sx={{ display: 'flex', padding: '1em' }}> |
| | | {' 12234'} |
| | | </Typography> |
| | | </Box>} |
| | | </Box> |
| | | </Box> |
| | | <Box textAlign="right"> |
| | | <Typography color="textSecondary">{title}</Typography> |
| | | <Typography variant="h5" component="h2"> |
| | | {subtitle || ' '} |
| | | </Typography> |
| | | </Box> |
| | | </Box> |
| | | {children && <Divider />} |
| | | {children} |
| | | </Card> |
| | | ); |
| | | {children && <Divider />} |
| | | {children} |
| | | </Card> |
| | | |
| | | ) |
| | | }; |
| | | |
| | | export default CardWithIcon; |