crates/server: REST API routes; RBAC auth middleware; cookie sessions; dashboard
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I5298a925bd9c11780e49d8b1c98eebd86a6a6964
This commit is contained in:
parent
44d1ee1d6b
commit
235d3d38a6
38 changed files with 6275 additions and 7 deletions
61
crates/server/templates/evaluation.html
Normal file
61
crates/server/templates/evaluation.html
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}Evaluation {{ eval.commit_short }} - FC CI{% endblock %}
|
||||
{% block breadcrumbs %}
|
||||
<nav class="breadcrumbs">
|
||||
<a href="/">Home</a> <span class="sep">/</span>
|
||||
<a href="/project/{{ project_id }}">{{ project_name }}</a> <span class="sep">/</span>
|
||||
<a href="/jobset/{{ jobset_id }}">{{ jobset_name }}</a> <span class="sep">/</span>
|
||||
<span class="current">{{ eval.commit_short }}</span>
|
||||
</nav>
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<h1>Evaluation {{ eval.commit_short }}</h1>
|
||||
<p><strong>Status:</strong> <span class="badge badge-{{ eval.status_class }}">{{ eval.status_text }}</span></p>
|
||||
<p><strong>Commit:</strong> <code>{{ eval.commit_hash }}</code></p>
|
||||
<p><strong>Time:</strong> {{ eval.time }}</p>
|
||||
{% match eval.error_message %}
|
||||
{% when Some with (err) %}
|
||||
<p><strong>Error:</strong> {{ err }}</p>
|
||||
{% when None %}
|
||||
{% endmatch %}
|
||||
|
||||
<div class="stats-grid">
|
||||
<div class="stat-card">
|
||||
<div class="stat-value">{{ succeeded_count }}</div>
|
||||
<div class="stat-label">Succeeded</div>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-value">{{ failed_count }}</div>
|
||||
<div class="stat-label">Failed</div>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-value">{{ running_count }}</div>
|
||||
<div class="stat-label">Running</div>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-value">{{ pending_count }}</div>
|
||||
<div class="stat-label">Pending</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2>Builds</h2>
|
||||
{% if builds.is_empty() %}
|
||||
<p class="empty">No builds for this evaluation.</p>
|
||||
{% else %}
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th>Job</th><th>Status</th><th>System</th><th>Created</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for b in builds %}
|
||||
<tr>
|
||||
<td><a href="/build/{{ b.id }}">{{ b.job_name }}</a></td>
|
||||
<td><span class="badge badge-{{ b.status_class }}">{{ b.status_text }}</span></td>
|
||||
<td>{{ b.system }}</td>
|
||||
<td>{{ b.created_at }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
Loading…
Add table
Add a link
Reference in a new issue