templates/campaign/view.html.twig
{% extends 'base.html.twig' %}
{% block title %}{{ parent() }} / {{ project.name }} / Campaign #{{ campaign.refid }}{% endblock %}
{% block breadcrumb %}
<ol class="breadcrumb">
<li class="breadcrumb-item"><a id="br_lvl1" href="{{ path('homepage') }}">ci-report</a></li>
<li class="breadcrumb-item"><a id="br_lvl2" href="{{ path('project-view', {'prefid': project.refid}) }}">{{ project.name }}</a></li>
<li id="br_lvl3" class="breadcrumb-item active">Campaign #{{ campaign.refid }}</li>
<li class="ml-auto">
<div class="btn-group btn-group-sm" role="group" aria-label="Previous Next">
{% if prevCampaign %}
<a id="a-top-prev" href="{{ path('campaign-view', {'prefid': project.refid, 'crefid': prevCampaign.refid}) }}" class="btn btn-outline-dark">Prev</a>
{% else %}
<button id="b-top-prev" type="button" class="btn btn-outline-dark" disabled>Prev</button>
{% endif %}
{% if nextCampaign %}
<a id="a-top-next" href="{{ path('campaign-view', {'prefid': project.refid, 'crefid': nextCampaign.refid}) }}" class="btn btn-outline-dark">Next</a>
{% else %}
<button id="b-top-next" type="button" class="btn btn-outline-dark" disabled>Next</button>
{% endif %}
</div>
</li>
</ol>
{% endblock %}
{% block container %}
<div class="row">
<div class="col-4">
<div class="card border-{{ statusColorClass(campaign.status) }}">
<div class="card-body">
<h4 class="card-title text-{{ statusColorClass(campaign.status) }}">
<button id="button_status" type="button" class="btn btn-{{ statusColorClass(campaign.status) }} btn-sm">
<i class="fa {{ statusIconClass(campaign.status) }} fa-3x"></i>
</button>
{{ campaign.percentage }} %
</h4>
<p id="p-id" class="card-text text-{{ statusColorClass(campaign.status) }}">#{{ campaign.refid }}</p>
<p id="p-passed" class="card-text text-success">Passed tests: {{ campaign.passed }}
<span class="text-muted">/ {{ campaign.enabled }}</span>
</p>
<p id="p-failed" class="card-text text-danger">Failed tests: {{ campaign.failed }}</p>
<p id="p-errored" class="card-text text-danger">Errored tests: {{ campaign.errored }}</p>
<p id="p-skipped" class="card-text text-warning">Skipped tests: {{ campaign.skipped }}</p>
<p id="p-disabled" class="card-text text-muted">Disabled tests: {{ campaign.disabled }}</p>
<p id="p-start" class="card-text text-muted">Start: {{ datetimeFormat(campaign.start) }}</p>
<p id="p-end" class="card-text text-muted">End: {{ datetimeFormat(campaign.end) }}</p>
</div>
</div>
</div>
<div class="col-8 justify-content-center align-self-center">
<canvas id="barChart" ></canvas>
</div>
</div>
<div class="row div-margin-top">
<div class="col-12">
<h5>Failed or errored tests</h5>
<hr>
</div>
</div>
<div class="row div-margin-top">
<div class="col-12">
<h5>Suites</h5>
<hr>
</div>
</div>
<div class="row">
<div class="col-12">
<table id="t-suite" class="table table-bordered">
<thead>
<tr>
<th>#Id</th>
<th>Name</th>
<th>%</th>
<th><span class="text-success">Passed</span></th>
<th><span class="text-danger">Failed</span></th>
<th><span class="text-danger">Errored</span></th>
<th><span class="text-warning">Skipped</span></th>
<th><span class="text-muted">Disabled</span></th>
<th>Duration</th>
<th><span class="text-muted">Time</span></th>
<th>Document</th>
</tr>
</thead>
<tbody>
{% for suite in suites %}
<tr id="tr-suite-{{ suite.refid }}" class="table-{{ statusColorClass(suite.status) }}">
<td><a id="a-suite-{{ suite.refid }}" href="{{ path('suite-view', {'prefid': project.refid, 'crefid': campaign.refid, 'srefid': suite.refid}) }}">#{{ suite.refid }}</a></td>
<td>{{ suite.name }}</td>
<td>{{ suite.percentage }} %</td>
<td>{{ suite.passed }} / {{ suite.enabled }}</td>
<td>{{ suite.failed }}</td>
<td>{{ suite.errored }}</td>
<td>{{ suite.skipped }}</td>
<td>{{ suite.disabled }}</td>
<td>{{ suite.duration }}s</td>
<td>{{ suite.datetime|date('d/m/Y H:i:s') }}</td>
<td>
{% if suite.documentUid is not null %}
<a id="a-download-{{ suite.refid }}"
data-toggle="popover" data-trigger="hover" data-placement="left" data-html="true"
title="Documents" data-content="Zip file to download."
href="{{ path('suite-doc', {'prefid': project.refid, 'crefid': campaign.refid, 'srefid': suite.refid}) }}">
<i class="fa fa-file-archive-o"></i>
</a>
{% endif %}
</td>
</tr>
{% else %}
<tr><td colspan="11">No suite</td></tr>
{% endfor %}
</tbody>
</table>
<a id="a-project" href="{{ path('project-view', {'prefid': project.refid}) }}" class="btn btn-outline-dark">Back to project</a>
<div class="btn-group" role="group" aria-label="Previous Next">
{% if prevCampaign %}
<a id="a-bottom-prev" href="{{ path('campaign-view', {'prefid': project.refid, 'crefid': prevCampaign.refid}) }}" class="btn btn-outline-dark">Prev</a>
{% else %}
<button id="b-bottom-prev" type="button" class="btn btn-outline-dark" disabled>Prev</button>
{% endif %}
{% if nextCampaign %}
<a id="a-bottom-next" href="{{ path('campaign-view', {'prefid': project.refid, 'crefid': nextCampaign.refid}) }}" class="btn btn-outline-dark">Next</a>
{% else %}
<button id="b-bottom-next" type="button" class="btn btn-outline-dark" disabled>Next</button>
{% endif %}
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
{% set barGraphValues = graphBarSuitesValues(suites) %}
<script>
var bar_y_axis = [{{ barGraphValues['yAxis']|raw }}];
var bar_red = [{{ barGraphValues['red'] }}];
var bar_yellow = [{{ barGraphValues['yellow'] }}];
var bar_green = [{{ barGraphValues['green'] }}];
var ctx = document.getElementById("barChart");
var myChart = new Chart(ctx, {
type: 'horizontalBar',
data: {
labels: bar_y_axis,
datasets: [
{
data: bar_red,
label: "Failed/Errored",
backgroundColor: "#ff8f9a"
},
{
data: bar_yellow,
label: "Skipped",
backgroundColor: "#ffe28a"
},
{
data: bar_green,
label: "Passed",
backgroundColor: "#98e7aa"
}
]
},
options: {
title: {
display: true,
text: 'Suites trend'
},
legend: {
position: 'bottom'
},
scales: {
yAxes: [{
stacked: true
}],
xAxes: [{
stacked: true
}]
}
}
});
</script>
{% endblock %}