Files
piratepoet/mailpoet/assets/js/src/help/queue-status.tsx
 Ján Mikláš e2c6f61ecd Show "Cancel task" button on running tasks
[MAILPOET-5755]
2024-07-04 08:04:34 +02:00

114 lines
3.2 KiB
TypeScript

import { MailPoet } from 'mailpoet';
import { KeyValueTable } from 'common/key-value-table.jsx';
import { TasksList } from './tasks-list/tasks-list';
import { Props as TasksListDataRowProps } from './tasks-list/tasks-list-data-row';
type Props = {
statusData: {
status?: string;
started?: number;
sent?: number;
retryAttempt?: number;
retryAt?: number;
error: {
operation?: string;
errorMessage?: string;
};
tasksStatusCounts: {
completed: number;
running: number;
paused: number;
scheduled: number;
};
latestTasks: TasksListDataRowProps['task'][];
};
};
function QueueStatus({ statusData }: Props): JSX.Element {
const status = statusData;
return (
<>
<h4>{MailPoet.I18n.t('systemStatusQueueTitle')}</h4>
<KeyValueTable
max_width="400px"
rows={[
{
key: MailPoet.I18n.t('status'),
value:
status.status === 'paused'
? MailPoet.I18n.t('paused')
: MailPoet.I18n.t('running'),
},
{
key: MailPoet.I18n.t('startedAt'),
value: status.started
? MailPoet.Date.full(status.started * 1000)
: MailPoet.I18n.t('unknown'),
},
{
key: MailPoet.I18n.t('sentEmails'),
value: status.sent || 0,
},
{
key: MailPoet.I18n.t('retryAttempt'),
value: status.retryAttempt || MailPoet.I18n.t('none'),
},
{
key: MailPoet.I18n.t('retryAt'),
value: status.retryAt
? MailPoet.Date.full(status.retryAt * 1000)
: MailPoet.I18n.t('none'),
},
{
key: MailPoet.I18n.t('error'),
value: status.error
? status.error.errorMessage
: MailPoet.I18n.t('none'),
},
{
key: MailPoet.I18n.t('totalCompletedTasks'),
value: status.tasksStatusCounts.completed,
},
{
key: MailPoet.I18n.t('totalRunningTasks'),
value: status.tasksStatusCounts.running,
},
{
key: MailPoet.I18n.t('totalPausedTasks'),
value: status.tasksStatusCounts.paused,
},
{
key: MailPoet.I18n.t('totalScheduledTasks'),
value: status.tasksStatusCounts.scheduled,
},
]}
/>
<h5>{MailPoet.I18n.t('scheduledTasks')}</h5>
<TasksList
type="scheduled"
tasks={status.latestTasks.filter((task) => task.status === 'scheduled')}
/>
<h5>{MailPoet.I18n.t('cancelledTasks')}</h5>
<TasksList
type="cancelled"
tasks={status.latestTasks.filter((task) => task.status === 'cancelled')}
/>
<h5>{MailPoet.I18n.t('runningTasks')}</h5>
<TasksList
type="running"
tasks={status.latestTasks.filter((task) => task.status === null)}
/>
<h5>{MailPoet.I18n.t('completedTasks')}</h5>
<TasksList
type="completed"
tasks={status.latestTasks.filter((task) => task.status === 'completed')}
/>
</>
);
}
export { QueueStatus };