circus/crates/server/templates/base.html
NotAShelf 83071514a3
fc-server: add metrics visualization dashboard
Adds a /metrics page with Chart.js charts, which requires an annoying
CDN fetch but until I figure out a good method of fetching things during
build it's our best bet. I've pinned the thing so it's probably good.

The page displays build counts, duration percentiles and system
distribution. Time range and project filters are included, and the
metrics page is linked from navigation.

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I99059594c29a9b35d2fd4d140628d6f46a6a6964
2026-02-14 18:08:21 +03:00

48 lines
1.3 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}FC CI{% endblock %}</title>
<link rel="stylesheet" href="/static/style.css">
</head>
<body>
<nav class="navbar">
<div class="nav-brand"><a href="/">FC CI</a></div>
<div class="nav-links">
<a href="/projects">Projects</a>
<a href="/evaluations">Evaluations</a>
<a href="/builds">Builds</a>
<a href="/queue">Queue</a>
<a href="/channels">Channels</a>
<a href="/starred">Starred</a>
<a href="/metrics">Metrics</a>
<a href="/users">Users</a>
<a href="/admin">Admin</a>
</div>
<div class="nav-auth">
{% block auth %}{% endblock %}
</div>
</nav>
<main class="page-main">
<div class="container">
{% block breadcrumbs %}{% endblock %}
{% block content %}{% endblock %}
</div>
</main>
<footer class="footer">
<p>FC CI &mdash; Nix-based continuous integration</p>
</footer>
<script>
function escapeHtml(s) {
var d = document.createElement('div');
d.textContent = s;
return d.innerHTML;
}
function showError(el, msg) {
el.innerHTML = '<div class="flash-message flash-error">' + escapeHtml(msg) + '</div>';
}
</script>
{% block scripts %}{% endblock %}
</body>
</html>