{% from '_status.html' import status_dot, status_bar %} {# ``deleted_count`` / ``skipped_count`` are only set when this partial is rendered as the response to a bulk delete; the SSE stream re-renders it without them, which clears the notice on the next poll. #} {% if deleted_count or skipped_count %}
Deleted {{ deleted_count }} run{{ '' if deleted_count == 1 else 's' }}. {% if skipped_count %} {{ skipped_count }} skipped — still running or already gone. {% endif %}
{% endif %} {% if runs %}
{% for run in runs %} {% set deletable = run.status.value in ('completed', 'failed', 'cancelled') %}
{% if deletable %} {% else %} {% endif %}
{{ run.workflow_name }} {{ status_dot(run.status.value) }} {{ run.status.value }}
{{ run.id }} {{ run.backend_name }}
{{ status_bar(run.status_counts, 'flex-1 h-2') }} {{ run.progress[0] }}/{{ run.progress[1] }}
{% if run.total_cpu_hours >= 1 %}{{ "%.1f"|format(run.total_cpu_hours) }}h {% elif run.total_cpu_hours > 0 %}{{ "%.1f"|format(run.total_cpu_hours * 60) }}m {% else %}—{% endif %}
{% endfor %}
{% else %}

No runs yet

Run a workflow above to create a run.

{% endif %}