= data_table(
[
[
'header' => lang('PodcastImport.queue.status.label'),
'cell' => function (PodcastImportTask $importTask) {
$pillVariantMap = [
'queued' => 'default',
'pending' => 'warning',
'running' => 'primary',
'canceled' => 'default',
'failed' => 'danger',
'passed' => 'success',
];
$pillIconMap = [
'queued' => 'timer',
'pending' => 'pause',
'running' => 'loader',
'canceled' => 'forbid',
'failed' => 'close',
'passed' => 'check',
];
$pillIconClassMap = [
'queued' => '',
'pending' => '',
'running' => 'animate-spin',
'canceled' => '',
'failed' => '',
'passed' => '',
];
$errorHint = $importTask->status === TaskStatus::Failed ? hint_tooltip($importTask->error, 'ml-1') : '';
return '
' . lang('PodcastImport.queue.status.' . $importTask->status->value) . '' . $errorHint . '
';
},
],
[
'header' => lang('PodcastImport.queue.feed'),
'cell' => function (PodcastImportTask $importTask) {
return <<
{$importTask->feed_url}
@{$importTask->handle}
HTML;
},
],
[
'header' => lang('PodcastImport.queue.duration'),
'cell' => function (PodcastImportTask $importTask) {
$duration = '-';
if ($importTask->started_at !== null) {
if ($importTask->ended_at !== null) {
$duration = '' .
'
' . format_duration((int) $importTask->getDuration(), true) . '
' .
'
' . relative_time($importTask->ended_at) . '
' .
'
';
} else {
$duration = '' . format_duration(($importTask->started_at->difference(Time::now()))->getSeconds(), true) . '
';
}
}
return $duration;
},
],
[
'header' => lang('PodcastImport.queue.imported_episodes'),
'cell' => function (PodcastImportTask $importTask) {
if ($importTask->episodes_count) {
$progressPercentage = (int) ($importTask->getProgress() * 100) . '%';
$moreInfoHelper = hint_tooltip(lang('PodcastImport.queue.imported_episodes_hint', [
'newlyImportedCount' => $importTask->episodes_newly_imported,
'alreadyImportedCount' => $importTask->episodes_already_imported,
]), 'ml-1');
return <<
{$progressPercentage}
{$importTask->episodes_imported} out of {$importTask->episodes_count}
{$moreInfoHelper}
HTML;
}
return '-';
},
],
[
'header' => lang('Common.list.actions'),
'cell' => function (PodcastImportTask $importTask) {
return '' .
'' .
'' .
'
';
},
],
],
$podcastImportsQueue
) ?>