Files
automatisch/packages/web/src/components/ExecutionRow/index.tsx
2022-08-09 19:15:19 +02:00

60 lines
1.9 KiB
TypeScript

import * as React from 'react';
import { Link } from 'react-router-dom';
import Card from '@mui/material/Card';
import Box from '@mui/material/Box';
import Stack from '@mui/material/Stack';
import CardActionArea from '@mui/material/CardActionArea';
import ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';
import { DateTime } from 'luxon';
import type { IExecution } from '@automatisch/types';
import * as URLS from 'config/urls';
import useFormatMessage from 'hooks/useFormatMessage';
import FlowAppIcons from 'components/FlowAppIcons';
import { Apps, CardContent, ArrowContainer, Title, Typography } from './style';
type ExecutionRowProps = {
execution: IExecution;
}
export default function ExecutionRow(props: ExecutionRowProps): React.ReactElement {
const formatMessage = useFormatMessage();
const { execution } = props;
const { flow } = execution;
const createdAt = DateTime.fromMillis(parseInt(execution.createdAt, 10));
const relativeCreatedAt = createdAt.toRelative();
return (
<Link to={URLS.EXECUTION(execution.id)}>
<Card sx={{ mb: 1 }}>
<CardActionArea>
<CardContent>
<Apps direction="row" gap={1} sx={{gridArea:"apps"}}>
<FlowAppIcons steps={flow.steps} />
</Apps>
<Title
justifyContent="center"
alignItems="flex-start"
spacing={1}
>
<Typography variant="h6" noWrap>
{flow.name}
</Typography>
<Typography variant="caption" noWrap>
{formatMessage('execution.executedAt', { datetime: relativeCreatedAt })}
</Typography>
</Title>
<ArrowContainer>
<ArrowForwardIosIcon sx={{ color: (theme) => theme.palette.primary.main }} />
</ArrowContainer>
</CardContent>
</CardActionArea>
</Card>
</Link>
);
}