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(esc($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) { $menuItems = [ [ 'type' => 'separator', ], [ 'type' => 'link', 'title' => lang('PodcastImport.queue.actions.delete'), 'uri' => route_to('podcast-imports-task-action', $importTask->id, 'delete'), 'class' => 'font-semibold text-red-600', ], ]; if ($importTask->status === TaskStatus::Running || $importTask->status === TaskStatus::Queued) { array_unshift($menuItems, [ 'type' => 'link', 'title' => lang('PodcastImport.queue.actions.cancel'), 'uri' => route_to('podcast-imports-task-action', $importTask->id, 'cancel'), ]); } else { array_unshift($menuItems, [ 'type' => 'link', 'title' => lang('PodcastImport.queue.actions.retry'), 'uri' => route_to('podcast-imports-task-action', $importTask->id, 'retry'), ], ); } return '
' . '' . '' . '
'; }, ], ], $podcastImportsQueue ) ?>