import { CardTitle } from 'components/CardTitle' import { KeyValueList } from 'components/KeyValueList' import { Card, Grid, Theme, Typography, WithStyles, createStyles, withStyles, } from '@material-ui/core' import Button from 'components/Button' import BaseLink from 'components/BaseLink' import Content from 'components/Content' import JobRunsList from './JobRunsList' import TaskListDag from './TaskListDag' import TaskList from 'components/Jobs/TaskList' import React from 'react' import { GWEI_PER_TOKEN } from 'utils/constants' import formatMinPayment from 'utils/formatWeiAsset' import { formatInitiators } from 'utils/jobSpecInitiators' import { DirectRequestJob, JobData } from './sharedTypes' import { parseDot } from './parseDot' const totalLinkEarned = (job: DirectRequestJob) => { const zero = '0.000000' const unformatted = job.earnings && (job.earnings / GWEI_PER_TOKEN).toString() const formatted = unformatted && (unformatted.length >= 3 ? unformatted : (unformatted + '.').padEnd(8, '0')) return formatted || zero } const chartCardStyles = ({ spacing, palette }: Theme) => createStyles({ wrapper: { marginLeft: spacing.unit * 3, marginTop: spacing.unit * 2, marginBottom: spacing.unit * 2, }, paymentText: { color: palette.secondary.main, fontWeight: 450, }, earnedText: { color: palette.text.secondary, fontSize: spacing.unit * 2, }, runDetails: { paddingTop: spacing.unit * 2, paddingBottom: spacing.unit * 2, paddingLeft: spacing.unit * 2, }, }) interface Props extends WithStyles { ErrorComponent: React.FC LoadingPlaceholder: React.FC error: unknown getJobSpecRuns: (props?: { page?: number; size?: number }) => Promise job?: JobData['job'] recentRuns?: JobData['recentRuns'] recentRunsCount: JobData['recentRunsCount'] showJobRunsCount?: number } export const RecentRuns = withStyles(chartCardStyles)( ({ classes, ErrorComponent, LoadingPlaceholder, error, getJobSpecRuns, job, recentRuns, recentRunsCount, showJobRunsCount = 5, }: Props) => { React.useEffect(() => { document.title = job?.name ? `${job.name} | Job spec details` : 'Job spec details' }, [job]) React.useEffect(() => { getJobSpecRuns() }, [getJobSpecRuns]) return ( {!error && job && ( Recent job runs {recentRuns && ( <> {recentRunsCount > showJobRunsCount && (
)} )}
{job?.type === 'Off-chain reporting' && job.dotDagSource !== '' && ( Task list )} {job?.type === 'Direct request' && ( Link Payment {totalLinkEarned(job)} Task list )}
)}
) }, )