c8df33a6 Andy McCall 24 days ago ↶
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 %}
f3e5e2bc Andy McCall 24 days ago ↶
5
{% macro icon(kind) %}< span class = " rep-icon rep-{{ kind }} " aria-hidden = " true" > < svg viewBox = " 0 0 24 24" width = " 22" height = " 22" fill = " none" stroke = " currentColor" stroke-width = " 2" stroke-linecap = " round" stroke-linejoin = " round" > {% if kind == "performance" %}< path d = " M4 17a8 8 0 1 1 16 0" /> < path d = " M12 17l4.5-6" /> < circle cx = " 12" cy = " 17" r = " 1.2" fill = " currentColor" /> {% else if kind == "coverage" %}< path d = " M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6z" /> < path d = " M8.5 12l2.5 2.5 4.5-5" /> {% else if kind == "tests" %}< path d = " M9 3h6" /> < path d = " M10 3v6l-5 9a2 2 0 0 0 1.8 3h10.4a2 2 0 0 0 1.8-3l-5-9V3" /> < path d = " M7.5 15h9" /> {% else %}< path d = " M5 20V11" /> < path d = " M12 20V4" /> < path d = " M19 20v-6" /> {% endif %}</ svg > </ span > {% endmacro %}
c8df33a6 Andy McCall 24 days ago ↶
6
{% block content %}
f3e5e2bc Andy McCall 24 days ago ↶
7
< div class = " rep-top " >
8
< h1 > Reports</ h1 >
9
< 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 %}. Changes are against the run before on the same bookmark.</ p >
10
</ div >
c8df33a6 Andy McCall 24 days ago ↶
11
< div class = " rep-list " >
12
{% for i in items %}
f3e5e2bc Andy McCall 24 days ago ↶
13
< article class = " rep-card rep-{{ i.health }} " >
c8df33a6 Andy McCall 24 days ago ↶
14
< div class = " rep-head " >
f3e5e2bc Andy McCall 24 days ago ↶
15
{% call icon(i.report.kind) %}
16
< div class = " rep-name " >
17
< a class = " rep-link " href = " {{ repo.url }}/reports/{{ i.report.name }}?id={{ i.report.id }}" > {{ i.report.title }}</ a >
18
< span class = " rep-kindname " > {{ i.report.kind }}</ span >
19
</ div >
20
< span class = " rep-badge " > {% if i.health == "good" %}✓ {% else if i.health == "bad" %}✗ {% endif %}{{ i.badge }}</ span >
c8df33a6 Andy McCall 24 days ago ↶
21
</ div >
22
{% if !i.report.summary.is_empty() %}< p class = " rep-summary " > {{ i.report.summary }}</ p > {% endif %}
f3e5e2bc Andy McCall 24 days ago ↶
23
{% if !i.metrics.is_empty() %}< ul class = " rep-tiles " > {% for v in i.metrics %}< li class = " {% if v.failing %}rep-failing{% endif %} " > < span class = " v " > {{ v.value }}{% if !v.unit.is_empty() %}< small > {{ v.unit }}</ small > {% endif %}</ span > < span class = " k " > {{ v.key }}</ span > {% if !v.delta.is_empty() %}< span class = " rep-delta {{ v.trend }} " > {{ v.delta }}</ span > {% endif %}</ li > {% endfor %}</ ul > {% endif %}
24
< div class = " rep-foot " > {% if !i.report.bookmark.is_empty() %}< span class = " lbl lbl-bm " > {{ i.report.bookmark }}</ span > {% endif %}{% if let Some(n) = i.report.run_number %} run #{{ n }} ·{% endif %} {{ i.report.job }} · < time title = " {{ i.report.created_ms|when_i }}" > {{ i.report.created_ms|ago_i }}</ time > </ div >
25
</ article >
c8df33a6 Andy McCall 24 days ago ↶
26
{% endfor %}
f3e5e2bc Andy McCall 24 days ago ↶
27
{% if let Some(c) = coverage %}
28
< article class = " rep-card rep-{{ c.health }} " >
29
< div class = " rep-head " >
30
{% call icon("coverage") %}
31
< div class = " rep-name " > < a class = " rep-link " href = " {{ repo.url }}/coverage" > Coverage</ a > < span class = " rep-kindname " > coverage</ span > </ div >
32
</ div >
33
< div class = " rep-hero " > < span class = " rep-big " > {{ c.big }}</ span > < span class = " mute " > {{ c.sub }}</ span > </ div >
34
< div class = " rep-foot " > < span class = " lbl lbl-bm " > {{ c.bookmark }}</ span > from the jobs' < code > coverage</ code > artifacts · < time title = " {{ c.when_ms|when_i }}" > {{ c.when_ms|ago_i }}</ time > </ div >
35
</ article >
c8df33a6 Andy McCall 24 days ago ↶
36
{% endif %}
f3e5e2bc Andy McCall 24 days ago ↶
37
{% if let Some(t) = tests %}
38
< article class = " rep-card rep-{{ t.health }} " >
39
< div class = " rep-head " >
40
{% call icon("tests") %}
41
< div class = " rep-name " > < a class = " rep-link " href = " {{ repo.url }}/tests" > Tests</ a > < span class = " rep-kindname " > tests</ span > </ div >
42
</ div >
43
< div class = " rep-hero " > < span class = " rep-big " > {{ t.big }}</ span > < span class = " mute " > {{ t.sub }}</ span > </ div >
44
< div class = " rep-foot " > < span class = " lbl lbl-bm " > {{ t.bookmark }}</ span > from the jobs' < code > junit</ code > artifacts · < time title = " {{ t.when_ms|when_i }}" > {{ t.when_ms|ago_i }}</ time > </ div >
45
</ article >
c8df33a6 Andy McCall 24 days ago ↶
46
{% endif %}
47
</ div >
f3e5e2bc Andy McCall 24 days ago ↶
48
{% if items.is_empty() & & coverage.is_none() & & tests.is_none() %}< 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 %}
c8df33a6 Andy McCall 24 days ago ↶
49
{% endblock %}