jfx/ci-report

View on GitHub
templates/campaign/view.html.twig

Summary

Maintainability
Test Coverage
{% 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>
                    &nbsp;{{ 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 %}