Full-stack burn-in orchestration dashboard (Stages 1–6d complete): FastAPI backend, SQLite/WAL, SSE live dashboard, mock TrueNAS server, SMTP/webhook notifications, batch burn-in, settings UI, audit log, stats page, cancel SMART/burn-in, drag-to-reorder stages. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
55 lines
1.6 KiB
HTML
55 lines
1.6 KiB
HTML
{% extends "layout.html" %}
|
|
|
|
{% block title %}TrueNAS Burn-In — Audit Log{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="page-toolbar">
|
|
<h1 class="page-title">Audit Log</h1>
|
|
<div class="toolbar-right">
|
|
<span class="page-subtitle">Last 200 events</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="table-wrap">
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th class="col-job">#</th>
|
|
<th>Time</th>
|
|
<th>Event</th>
|
|
<th class="col-drive">Drive</th>
|
|
<th>Operator</th>
|
|
<th>Message</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% if events %}
|
|
{% for e in events %}
|
|
{% set color = event_colors.get(e.event_type, 'unknown') %}
|
|
<tr>
|
|
<td class="mono text-muted">{{ e.id }}</td>
|
|
<td class="mono text-muted" style="white-space:nowrap">{{ e.created_at | format_dt_full }}</td>
|
|
<td>
|
|
<span class="chip chip-{{ color }}">{{ e.event_type | replace('_', ' ') }}</span>
|
|
</td>
|
|
<td class="col-drive">
|
|
{% if e.devname %}
|
|
<span class="drive-name">{{ e.devname }}</span>
|
|
{% if e.serial %}<span class="drive-model mono">{{ e.serial }}</span>{% endif %}
|
|
{% else %}
|
|
<span class="cell-empty">—</span>
|
|
{% endif %}
|
|
</td>
|
|
<td class="text-muted">{{ e.operator or '—' }}</td>
|
|
<td class="text-muted" style="max-width:360px;white-space:normal">{{ e.message }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
{% else %}
|
|
<tr>
|
|
<td colspan="6" class="empty-state">No audit events yet.</td>
|
|
</tr>
|
|
{% endif %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{% endblock %}
|