OXYGENHUB
# c8df33a6829f oxygenhub / templates / reports.html
2.5 KiB · HTML · last changed Reports: the Reports tab, each report's page, its frame, and checks from thresholds 24 days ago source blame history raw
1
{% extends "base.html" %}
2
{% import "repo_tabs.html" as m %}
3
{% block title %}Reports · {{ repo.owner }}/{{ repo.name }}{% endblock %}
4
{% block tabs %}{% call m::tabs(repo, "reports") %}{% endblock %}
5
{% block content %}
6
<h1>Reports</h1>
7
<p class="mute small">What this repository's Flow jobs measure, newest run first{% if !bookmark.is_empty() %}, on <strong>{{ bookmark }}</strong> (<a href="{{ repo.url }}/reports">all bookmarks</a>){% endif %}. Each metric shows its change against the run before on the same bookmark.</p>
8
<div class="rep-list">
9
{% for i in items %}
10
  <a class="panel rep-card" href="{{ repo.url }}/reports/{{ i.report.name }}?id={{ i.report.id }}">
11
    <div class="rep-head">
12
      <span class="tag rep-kind rep-{{ i.report.kind }}">{{ i.report.kind }}</span>
13
      <strong class="rep-title">{{ i.report.title }}</strong>
14
    </div>
15
    {% if !i.report.summary.is_empty() %}<p class="rep-summary">{{ i.report.summary }}</p>{% endif %}
16
    {% if !i.metrics.is_empty() %}<ul class="rep-metrics">{% for v in i.metrics %}<li class="{% if v.failing %}rep-failing{% endif %}"><span class="k">{{ v.key }}</span> <span class="v">{{ v.value }}{% if !v.unit.is_empty() %} <small>{{ v.unit }}</small>{% endif %}</span>{% if !v.delta.is_empty() %} <span class="rep-delta {{ v.trend }}">{{ v.delta }}</span>{% endif %}</li>{% endfor %}</ul>{% endif %}
17
    <div class="small mute">{% if !i.report.bookmark.is_empty() %}on {{ i.report.bookmark }} · {% endif %}{% if let Some(n) = i.report.run_number %}run #{{ n }} · {% endif %}job {{ i.report.job }} · <time title="{{ i.report.created_ms|when_i }}">{{ i.report.created_ms|ago_i }}</time></div>
18
  </a>
19
{% endfor %}
20
{% if coverage %}
21
  <a class="panel rep-card" href="{{ repo.url }}/coverage">
22
    <div class="rep-head"><span class="tag rep-kind rep-coverage">coverage</span> <strong class="rep-title">Coverage</strong></div>
23
    <p class="rep-summary">Line coverage from the jobs' <code>coverage</code> artifacts, by file and across runs.</p>
24
  </a>
25
{% endif %}
26
{% if tests %}
27
  <a class="panel rep-card" href="{{ repo.url }}/tests">
28
    <div class="rep-head"><span class="tag rep-kind rep-tests">tests</span> <strong class="rep-title">Tests</strong></div>
29
    <p class="rep-summary">Test results from the jobs' <code>junit</code> artifacts, each case and its history.</p>
30
  </a>
31
{% endif %}
32
</div>
33
{% if items.is_empty() && !coverage && !tests %}<p class="empty">No reports yet. A Flow job keeps one with <code>report "NAME" { path "/src/out/report" }</code> in its output; see the OxygenFlow wiki's Reports page.</p>{% endif %}
34
{% endblock %}