- /ansible/playbooks lists every playbook across sources: what it says it does, its category and destructive flag, how it last ran; the whole row opens the playbook. A source with none is one quiet line. - /ansible/playbooks/<source>/<path>: the verdict (what it does, flagged destructive, last ran), the run form in place (dry run beside the button, options folded), the schedules that use it, its recent runs, the playbook itself folded. ?from=<run> fills the form from that run: Run again on a run's page. - /ansible/browse, its view page and the /run-form fragment are gone, not redirected (rule 122); every link points at the new pages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
27 lines
764 B
HTML
27 lines
764 B
HTML
{# ansible/_runs_table.html — the runs table under the filter bar; the bar's
|
|
HTMX requests swap this alone. #}
|
|
{% from "_macros.html" import empty_state %}
|
|
{% if not runs %}
|
|
<div class="card">
|
|
{%- if filtered %}{{ empty_state("No runs match these filters.", "Show every run", "/ansible/") }}
|
|
{%- else %}{{ empty_state("No runs yet.", "Run a playbook", "/ansible/playbooks") }}{% endif -%}
|
|
</div>
|
|
{% else %}
|
|
<div class="card-flush">
|
|
<table class="table">
|
|
<thead>
|
|
<tr>
|
|
<th>Run</th>
|
|
<th>Result</th>
|
|
<th>Started by</th>
|
|
<th>Started</th>
|
|
<th class="num">Took</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% include "ansible/_runs_page.html" %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{% endif %}
|