summaryrefslogtreecommitdiffstats
path: root/non-puppet/qtmetrics2/templates
diff options
context:
space:
mode:
Diffstat (limited to 'non-puppet/qtmetrics2/templates')
-rw-r--r--non-puppet/qtmetrics2/templates/about.html4
-rw-r--r--non-puppet/qtmetrics2/templates/conf.html13
-rw-r--r--non-puppet/qtmetrics2/templates/home.html7
-rw-r--r--non-puppet/qtmetrics2/templates/testfunction.html7
-rw-r--r--non-puppet/qtmetrics2/templates/testfunctions_duration.html108
-rw-r--r--non-puppet/qtmetrics2/templates/testset.html16
-rw-r--r--non-puppet/qtmetrics2/templates/testset_testfunctions.html8
-rw-r--r--non-puppet/qtmetrics2/templates/testsets_duration.html110
-rw-r--r--non-puppet/qtmetrics2/templates/testsets_duration_data.html183
9 files changed, 426 insertions, 30 deletions
diff --git a/non-puppet/qtmetrics2/templates/about.html b/non-puppet/qtmetrics2/templates/about.html
index 044d95a..715df9b 100644
--- a/non-puppet/qtmetrics2/templates/about.html
+++ b/non-puppet/qtmetrics2/templates/about.html
@@ -34,7 +34,7 @@
/**
* About window content
- * @since 23-09-2015
+ * @since 24-09-2015
* @author Juha Sippola
*/
@@ -52,4 +52,4 @@ and the global Qt developer community are the target audience. For detailed desc
<p>See the <strong><a href="https://wiki.qt.io/Qt_Metrics_2_Backlog" target="_blank">backlog</a></strong>
for development items currently identified or in progress.</p>
-<p><small>Version 0.34 (23-Sep-2015)</small></p>
+<p><small>Version 0.35 (24-Sep-2015)</small></p>
diff --git a/non-puppet/qtmetrics2/templates/conf.html b/non-puppet/qtmetrics2/templates/conf.html
index f5dab3a..16015e8 100644
--- a/non-puppet/qtmetrics2/templates/conf.html
+++ b/non-puppet/qtmetrics2/templates/conf.html
@@ -34,7 +34,7 @@
/**
* Configuration page
- * @since 17-09-2015
+ * @since 24-09-2015
* @author Juha Sippola
*/
@@ -368,11 +368,6 @@ title="insignificant">i</span>
{% else %}
{% set resultIcon = '' %}
{% endif %}
-{% if (run.getDuration / 10) > 60 %}
-{% set durationFormatted = ' (00:' ~ (run.getDuration/10)|date("i:s") ~ ')' %}
-{% else %}
-{% set durationFormatted = '' %}
-{% endif %}
{# Print result #}
<td class="center">
<span class="spaceHorizontal {{ resultIcon }} clickOnTouch" data-toggle="tooltip" data-placement="top" data-html="true"
@@ -558,8 +553,8 @@ title="<table>
{% else %}
{% set resultIcon = '' %}
{% endif %}
-{% if (run.getDuration / 10) > 60 %}
-{% set durationFormatted = ' (00:' ~ (run.getDuration/10)|date("i:s") ~ ')' %}
+{% if run.getDuration > 60 %}
+{% set durationFormatted = ' (00:' ~ (run.getDuration|round)|date("i:s") ~ ')' %}
{% else %}
{% set durationFormatted = '' %}
{% endif %}
@@ -570,7 +565,7 @@ title="<table>
<tr><th>Testset: </th><td>{{ run.getName }}</td></tr>
<tr><th>Timestamp: </th><td>{{ run.getTimestamp }}</td></tr>
<tr><th>Result: </th><td>{{ run.getResult }} {{ flaky }}</td></tr>
-<tr><th>Duration: </th><td>{{ run.getDuration / 10 }} s {{ durationFormatted }}</td></tr>
+<tr><th>Duration: </th><td>{{ run.getDuration }} s {{ durationFormatted }}</td></tr>
<tr><th>Run #: </th><td>{{ run.getRun }}</td></tr>
<tr><th>Insignificant: </th><td>{% if run.getInsignificant %}yes{% else %}no{% endif %}</td></tr></table>"></span></td>
{% set buildKeyFound = 1 %}
diff --git a/non-puppet/qtmetrics2/templates/home.html b/non-puppet/qtmetrics2/templates/home.html
index 185e257..da90858 100644
--- a/non-puppet/qtmetrics2/templates/home.html
+++ b/non-puppet/qtmetrics2/templates/home.html
@@ -34,7 +34,7 @@
/**
* Home page
- * @since 21-09-2015
+ * @since 24-09-2015
* @author Juha Sippola
*/
@@ -127,14 +127,15 @@
</form>
</div>
<br>
-<p>See top failure/flaky lists:</p>
+<p>See top lists:</p>
<div>
<a class="btn btn-primary btn-xs" href="{{ topRoute }}" role="button">testsets</a>
<a class="btn btn-primary btn-xs" href="{{ flakyRoute }}" role="button">flaky</a>
<a class="btn btn-primary btn-xs" href="{{ topTestfunctionsRoute }}" role="button">test functions</a>
+<a class="btn btn-primary btn-xs" href="{{ durationTestsetsRoute }}" role="button">duration</a>
</div>
<br>
-<p>See blacklisted tests where tagging could be removed:</p>
+<p>See blacklisted but passed tests:</p>
<div>
<a class="btn btn-primary btn-xs" href="{{ bpassedTestfunctionsRoute }}" role="button">test functions</a>
</div>
diff --git a/non-puppet/qtmetrics2/templates/testfunction.html b/non-puppet/qtmetrics2/templates/testfunction.html
index 14d285b..1338d02 100644
--- a/non-puppet/qtmetrics2/templates/testfunction.html
+++ b/non-puppet/qtmetrics2/templates/testfunction.html
@@ -34,7 +34,7 @@
/**
* Test function page (list of test rows)
- * @since 23-09-2015
+ * @since 24-09-2015
* @author Juha Sippola
*/
@@ -247,11 +247,6 @@
{% else %}
{% set resultIcon = '' %}
{% endif %}
-{% if (run.getDuration / 10) > 60 %}
-{% set durationFormatted = ' (00:' ~ ((run.getDuration/10)|round)|date("i:s") ~ ')' %}
-{% else %}
-{% set durationFormatted = '' %}
-{% endif %}
<td class="center">
<span class="spaceHorizontal {{ resultIcon }} clickOnTouch" data-toggle="tooltip" data-placement="top" data-html="true"
title="<table>
diff --git a/non-puppet/qtmetrics2/templates/testfunctions_duration.html b/non-puppet/qtmetrics2/templates/testfunctions_duration.html
new file mode 100644
index 0000000..c09f7cd
--- /dev/null
+++ b/non-puppet/qtmetrics2/templates/testfunctions_duration.html
@@ -0,0 +1,108 @@
+{#
+#############################################################################
+##
+## Copyright (C) 2015 The Qt Company Ltd.
+## Contact: http://www.qt.io/licensing/
+##
+## This file is part of the Quality Assurance module of the Qt Toolkit.
+##
+## $QT_BEGIN_LICENSE:LGPL21$
+## Commercial License Usage
+## Licensees holding valid commercial Qt licenses may use this file in
+## accordance with the commercial license agreement provided with the
+## Software or, alternatively, in accordance with the terms contained in
+## a written agreement between you and The Qt Company. For licensing terms
+## and conditions see http://www.qt.io/terms-conditions. For further
+## information use the contact form at http://www.qt.io/contact-us.
+##
+## GNU Lesser General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU Lesser
+## General Public License version 2.1 or version 3 as published by the Free
+## Software Foundation and appearing in the file LICENSE.LGPLv21 and
+## LICENSE.LGPLv3 included in the packaging of this file. Please review the
+## following information to ensure the GNU Lesser General Public License
+## requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+##
+## As a special exception, The Qt Company gives you certain additional
+## rights. These rights are described in The Qt Company LGPL Exception
+## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+
+/**
+ * Top duration (testsets) page
+ * @since 24-09-2015
+ * @author Juha Sippola
+ */
+
+#}
+
+{% include "header.html" %}
+
+<ol class="breadcrumb">
+{% for link in breadcrumb %}
+<li><a href="{{ link.link }}">{{ link.name }}</a></li>
+{% endfor %}
+<li class="active">top test function duration</li>
+</ol>
+
+<div class="container-fluid">
+<div class="row">
+
+<div class="col-sm-12 col-md-12 main">
+
+{##### Title #####}
+
+<h1 class="page-header">
+<span id="testset">{{ testset }}</span>
+<span id="project" class="hidden">{{ project }}</span>
+Top Test Function Duration
+<button type="button" class="btn btn-xs btn-info" data-toggle="collapse" data-target="#info" aria-expanded="false" aria-controls="info">
+<span class="glyphicon glyphicon-info-sign"></span>
+</button>
+<small>{{ refreshed }}</small>
+</h1>
+
+{##### Info well #####}
+
+<div class="collapse" id="info">
+<div class="well infoWell">
+<span class="glyphicon glyphicon-info-sign"></span> <strong>Top Test Function Duration</strong><br>
+<ul>
+<li>Lists test functions for the testset {{ testset }} by their duration in
+<strong>{{ masterProject }} {{ masterState }}</strong> builds during the last {{ lastDays }} days.
+The list includes only the test function runs that took over {{ durationLimitSec }} seconds.</li>
+<li>Each test function is listed here only once showing the test run that took the longest time.
+All test function runs in different configurations across all branches can be seen on the linked
+testset page, where the differences between configurations and branches can be studied as well.</li>
+</ul>
+</div>
+</div>
+
+{##### List #####}
+
+<div id="testfunctions_duration">
+<div class="panel panel-primary">
+<div class="panel-heading">
+<h4 class="panel-title bold">Last {{ lastDays }} days <small>(since {{ sinceDate }}, duration over {{ durationLimitSec }}s)</small></h4>
+</div>
+</div>
+<div class="progress data_loading">
+<div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
+</div>
+</div>
+</div> {# testfunctions_duration #}
+
+</div> {# .col... #}
+</div> {# .row #}
+</div> {# .container-fluid #}
+
+{% include "footer.html" %}
+
+{# Local scripts for this page #}
+<script src="scripts/ajax.js"></script>
+
+{% include "close.html" %}
diff --git a/non-puppet/qtmetrics2/templates/testset.html b/non-puppet/qtmetrics2/templates/testset.html
index 9fd4900..3cb54e6 100644
--- a/non-puppet/qtmetrics2/templates/testset.html
+++ b/non-puppet/qtmetrics2/templates/testset.html
@@ -34,7 +34,7 @@
/**
* Testset page (list of configurations)
- * @since 23-09-2015
+ * @since 24-09-2015
* @author Juha Sippola
*/
@@ -124,11 +124,15 @@ and their configuration on <strong>{{ masterProject }} {{ masterState }}</strong
<div>
<div class="btn-group">
{% set link = bpassedTestsetRoute ~ '/' ~ testset.getName|url_encode ~ '/' ~ testset.getProjectName|url_encode %}
-<a class="btn btn-primary btn-xs" href="{{ link }}" role="button">blacklisted passes for<br>test functions</a>
+<a class="btn btn-primary btn-xs" href="{{ link }}" role="button"><span class="badge">test functions</span><br>blacklisted passes</a>
</div>
<div class="btn-group">
{% set link = bpassedtestsetTestrowsRoute ~ '/' ~ testset.getName|url_encode ~ '/' ~ testset.getProjectName|url_encode %}
-<a class="btn btn-primary btn-xs" href="{{ link }}" role="button">blacklisted passes for<br>test rows</a>
+<a class="btn btn-primary btn-xs" href="{{ link }}" role="button"><span class="badge">test rows</span><br>blacklisted passes</a>
+</div>
+<div class="btn-group">
+{% set link = durationTestfunctionsRoute ~ '/' ~ testset.getName|url_encode ~ '/' ~ testset.getProjectName|url_encode %}
+<a class="btn btn-primary btn-xs" href="{{ link }}" role="button"><span class="badge">test functions</span><br>duration</a>
</div>
</div>
<hr>
@@ -341,8 +345,8 @@ and their configuration on <strong>{{ masterProject }} {{ masterState }}</strong
{% else %}
{% set resultIcon = '' %}
{% endif %}
-{% if (run.getDuration / 10) > 60 %}
-{% set durationFormatted = ' (00:' ~ (run.getDuration/10)|date("i:s") ~ ')' %}
+{% if run.getDuration > 60 %}
+{% set durationFormatted = ' (00:' ~ (run.getDuration|round)|date("i:s") ~ ')' %}
{% else %}
{% set durationFormatted = '' %}
{% endif %}
@@ -353,7 +357,7 @@ title="<table>
<tr><th>Configuration: </th><td>{{ run.getConfName }}</td></tr>
<tr><th>Timestamp: </th><td>{{ run.getTimestamp }}</td></tr>
<tr><th>Result: </th><td>{{ run.getResult }} {{ flaky }}</td></tr>
-<tr><th>Duration: </th><td>{{ run.getDuration / 10 }} s {{ durationFormatted }}</td></tr>
+<tr><th>Duration: </th><td>{{ run.getDuration }} s {{ durationFormatted }}</td></tr>
<tr><th>Run #: </th><td>{{ run.getRun }}</td></tr>
<tr><th>Insignificant: </th><td>{% if run.getInsignificant %}yes{% else %}no{% endif %}</td></tr></table>">
</span></td>
diff --git a/non-puppet/qtmetrics2/templates/testset_testfunctions.html b/non-puppet/qtmetrics2/templates/testset_testfunctions.html
index d2ee081..d5c2d44 100644
--- a/non-puppet/qtmetrics2/templates/testset_testfunctions.html
+++ b/non-puppet/qtmetrics2/templates/testset_testfunctions.html
@@ -34,7 +34,7 @@
/**
* Testset page (list of test functions)
- * @since 21-09-2015
+ * @since 24-09-2015
* @author Juha Sippola
*/
@@ -261,8 +261,8 @@
{% else %}
{% set resultIcon = '' %}
{% endif %}
-{% if (run.getDuration / 10) > 60 %}
-{% set durationFormatted = ' (00:' ~ ((run.getDuration/10)|round)|date("i:s") ~ ')' %}
+{% if run.getDuration > 60 %}
+{% set durationFormatted = ' (00:' ~ (run.getDuration|round)|date("i:s") ~ ')' %}
{% else %}
{% set durationFormatted = '' %}
{% endif %}
@@ -278,7 +278,7 @@ title="<table>
<tr><th>Configuration: </th><td>{{ run.getConfName }}</td></tr>
<tr><th>Timestamp: </th><td>{{ run.getTimestamp }}</td></tr>
<tr><th>Result: </th><td>{{ run.getResult }} {{ testrowResult }}</td></tr>
-<tr><th>Duration: </th><td>{{ run.getDuration / 10 }} s {{ durationFormatted }}</td></tr>
+<tr><th>Duration: </th><td>{{ run.getDuration }} s {{ durationFormatted }}</td></tr>
<tr><th>Blacklisted: </th><td>{% if run.getBlacklisted %}yes{% else %}no{% endif %}</td></tr></table>">
</span></td>
{% set buildKeyFound = 1 %}
diff --git a/non-puppet/qtmetrics2/templates/testsets_duration.html b/non-puppet/qtmetrics2/templates/testsets_duration.html
new file mode 100644
index 0000000..8fd953a
--- /dev/null
+++ b/non-puppet/qtmetrics2/templates/testsets_duration.html
@@ -0,0 +1,110 @@
+{#
+#############################################################################
+##
+## Copyright (C) 2015 The Qt Company Ltd.
+## Contact: http://www.qt.io/licensing/
+##
+## This file is part of the Quality Assurance module of the Qt Toolkit.
+##
+## $QT_BEGIN_LICENSE:LGPL21$
+## Commercial License Usage
+## Licensees holding valid commercial Qt licenses may use this file in
+## accordance with the commercial license agreement provided with the
+## Software or, alternatively, in accordance with the terms contained in
+## a written agreement between you and The Qt Company. For licensing terms
+## and conditions see http://www.qt.io/terms-conditions. For further
+## information use the contact form at http://www.qt.io/contact-us.
+##
+## GNU Lesser General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU Lesser
+## General Public License version 2.1 or version 3 as published by the Free
+## Software Foundation and appearing in the file LICENSE.LGPLv21 and
+## LICENSE.LGPLv3 included in the packaging of this file. Please review the
+## following information to ensure the GNU Lesser General Public License
+## requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+##
+## As a special exception, The Qt Company gives you certain additional
+## rights. These rights are described in The Qt Company LGPL Exception
+## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+
+/**
+ * Top duration (testsets) page
+ * @since 24-09-2015
+ * @author Juha Sippola
+ */
+
+#}
+
+{% include "header.html" %}
+
+<ol class="breadcrumb">
+{% for link in breadcrumb %}
+<li><a href="{{ link.link }}">{{ link.name }}</a></li>
+{% endfor %}
+<li class="active">top testset duration</li>
+</ol>
+
+<div class="container-fluid">
+<div class="row">
+
+<div class="col-sm-12 col-md-12 main">
+
+{##### Title #####}
+
+<h1 class="page-header">
+Top Testset Duration
+<button type="button" class="btn btn-xs btn-info" data-toggle="collapse" data-target="#info" aria-expanded="false" aria-controls="info">
+<span class="glyphicon glyphicon-info-sign"></span>
+</button>
+<small>{{ refreshed }}</small>
+</h1>
+
+{##### Info well #####}
+
+<div class="collapse" id="info">
+<div class="well infoWell">
+<span class="glyphicon glyphicon-info-sign"></span> <strong>Top Testset Duration</strong><br>
+<ul>
+<li>Lists testsets by their duration in <strong>{{ masterProject }} {{ masterState }}</strong>
+builds during the last {{ lastDays }} days. The list includes only the testset runs that took
+over {{ durationLimitSec }} seconds.</li>
+<li>Each testset is listed here only once showing the test run that took the longest time.
+All testset runs in different configurations across all branches can be seen on the linked
+testset page in order to check the differences between configurations and branches, as well
+as to show the test function duration list.</li>
+</ul>
+</div>
+</div>
+
+{##### List #####}
+
+<div id="testsets_duration">
+<div class="panel panel-primary">
+<div class="panel-heading">
+<h4 class="panel-title bold">Last {{ lastDays }} days <small>(since {{ sinceDate }}, duration over {{ durationLimitSec }}s)</small></h4>
+</div>
+</div>
+<div class="progress data_loading">
+<div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
+</div>
+</div>
+<div class="alert alert-warning" role="alert">
+<span class="glyphicon glyphicon-time"></span> <strong>Please wait:</strong> Extracting the data will be ready in less than a minute!
+</div>
+</div> {# testsets_duration #}
+
+</div> {# .col... #}
+</div> {# .row #}
+</div> {# .container-fluid #}
+
+{% include "footer.html" %}
+
+{# Local scripts for this page #}
+<script src="scripts/ajax.js"></script>
+
+{% include "close.html" %}
diff --git a/non-puppet/qtmetrics2/templates/testsets_duration_data.html b/non-puppet/qtmetrics2/templates/testsets_duration_data.html
new file mode 100644
index 0000000..59497d9
--- /dev/null
+++ b/non-puppet/qtmetrics2/templates/testsets_duration_data.html
@@ -0,0 +1,183 @@
+{#
+#############################################################################
+##
+## Copyright (C) 2015 The Qt Company Ltd.
+## Contact: http://www.qt.io/licensing/
+##
+## This file is part of the Quality Assurance module of the Qt Toolkit.
+##
+## $QT_BEGIN_LICENSE:LGPL21$
+## Commercial License Usage
+## Licensees holding valid commercial Qt licenses may use this file in
+## accordance with the commercial license agreement provided with the
+## Software or, alternatively, in accordance with the terms contained in
+## a written agreement between you and The Qt Company. For licensing terms
+## and conditions see http://www.qt.io/terms-conditions. For further
+## information use the contact form at http://www.qt.io/contact-us.
+##
+## GNU Lesser General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU Lesser
+## General Public License version 2.1 or version 3 as published by the Free
+## Software Foundation and appearing in the file LICENSE.LGPLv21 and
+## LICENSE.LGPLv3 included in the packaging of this file. Please review the
+## following information to ensure the GNU Lesser General Public License
+## requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+##
+## As a special exception, The Qt Company gives you certain additional
+## rights. These rights are described in The Qt Company LGPL Exception
+## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+
+/**
+ * Top duration (testsets and testfunctions) data
+ * @since 24-09-2015
+ * @author Juha Sippola
+ */
+
+#}
+
+{# Failed/passed bar area size in px #}
+{% set BAR_AREA = 120 %}
+
+{# runs as TestsetRun objects
+/**
+ * @var TestsetRun[] runs
+ */
+#}
+{# runs as TestfunctionRun objects
+/**
+ * @var TestfunctionRun[] runs
+ */
+#}
+
+{##### List #####}
+
+{# Calculate max duration for the bar #}
+{% set runCount = 0 %}
+{% set maxDuration = 1 %}
+{% for run in runs %}
+{% set runCount = runCount + 1 %}
+{% if run.getDuration > maxDuration %}
+{% set maxDuration = run.getDuration %}
+{% endif %}
+{% endfor %}
+
+<div class="panel panel-primary">
+<div class="panel-heading">
+<h4 class="panel-title bold">Last {{ lastDays }} days <small>(since {{ sinceDate }}, duration over {{ durationLimitSec }}s)</small></h4>
+</div>
+
+{% if runCount > 0 %}
+
+<div class="panel-body">
+<div class="table-responsive">
+<table class="table table-striped">
+<thead>
+<tr>
+{% if list == 'testsets' %}
+<th>testset</th>
+{% else %}
+<th>test function</th>
+{% endif %}
+<th class="leftBorder center">duration</th>
+<th class="showInLargeDisplay"></th>
+<th class="leftBorder">build information</th>
+</tr>
+</thead>
+<tbody>
+
+{# Print testsets #}
+{% for run in runs %}
+<tr>
+{# Testset and project name#}
+{% if list == 'testsets' %}
+{% set link = testsetRoute ~ '/' ~ run.getName|url_encode ~ '/' ~ run.getTestsetProjectName|url_encode %}
+<td><a href="{{ link }}">
+{% if run.getName|length > constant('TestsetRun::SHORT_NAME_LENGTH') %}
+<span class="clickOnTouch" data-toggle="tooltip" data-placement="top" title="{{ run.getName }}">{{ run.getShortName }}</span>
+{% else %}
+{{ run.getShortName }}
+{% endif %}
+</a><br>in {{ run.getTestsetProjectName }}</td>
+
+{# Testfunction name #}
+{% else %}
+<td>
+{% if run.getName|length > constant('TestsetRun::SHORT_NAME_LENGTH') %}
+<span class="clickOnTouch" data-toggle="tooltip" data-placement="top" title="{{ run.getName }}">{{ run.getShortName }}</span>
+{% else %}
+{{ run.getShortName }}
+{% endif %}
+</td>
+{% endif %}
+
+{# Duration #}
+{% if run.getDuration > 60 %}
+{% set durationFormatted = ' (00:' ~ (run.getDuration|round)|date("i:s") ~ ')' %}
+{% else %}
+{% set durationFormatted = '' %}
+{% endif %}
+<td class="leftBorder center">{{ run.getDuration }}s<br>{{ durationFormatted }}</td>
+
+{# Show results as bars (scaled to BAR_AREA px) #}
+{% set bar = ((BAR_AREA/maxDuration) * run.getDuration)|round(0, 'floor') %}
+{% if (run.getDuration > 0) and (bar == 0) %}
+{% set bar = 1 %}
+{% endif %}
+<td class="center showInLargeDisplay">
+<div>
+<div class="floatLeft blueBackground" style="width: {{ bar }}px">&nbsp;</div>
+</div>
+</td>
+{# Build info #}
+{% if run.getResult == constant('testsetRun::RESULT_SUCCESS') %}
+{% set resultIcon = 'glyphicon glyphicon-ok green' %}
+{% elseif run.getResult == constant('testsetRun::RESULT_FAILURE') %}
+{% set resultIcon = 'glyphicon glyphicon-remove red' %}
+{% elseif run.getResult == constant('TestfunctionRun::RESULT_SUCCESS') %}
+{% set resultIcon = 'glyphicon glyphicon-ok green' %}
+{% elseif run.getResult == constant('TestfunctionRun::RESULT_FAILURE') %}
+{% set resultIcon = 'glyphicon glyphicon-remove red' %}
+{% elseif run.getResult == constant('TestfunctionRun::RESULT_FAILURE_EXPECTED') %}
+{% set resultIcon = 'glyphicon glyphicon-remove-sign green' %}
+{% elseif run.getResult == constant('TestfunctionRun::RESULT_SUCCESS_UNEXPECTED') %}
+{% set resultIcon = 'glyphicon glyphicon-ok-sign red' %}
+{% elseif run.getResult == constant('TestfunctionRun::RESULT_SKIP') %}
+{% set resultIcon = 'glyphicon glyphicon-ban-circle gray' %}
+{% else %}
+{% set resultIcon = '' %}
+{% endif %}
+{% if list == 'testsets' %}
+{% set resultTitle = 'testset result: ' ~ run.getResult %}
+{% else %}
+{% set resultTitle = 'test function result: ' ~ run.getResult %}
+{% endif %}
+<td class="leftBorder"><small>
+<span class="clickOnTouch" data-toggle="tooltip" data-placement="top" title="{{ resultTitle }}"><span class="{{ resultIcon }}"></span></span>
+<a href="{{ run.getBuildLink }}" target="_blank"><span class="spaceHorizontal glyphicon glyphicon-folder-open"></span></a>
+{{ run.getBranchName }} build on {{ run.getTimestamp }}
+<br>{{ run.getConfName }}</small></td>
+</tr>
+{% endfor %}{# run #}
+</tbody>
+</table>
+</div> {# .table-responsive #}
+</div> {# .panel-body #}
+
+{% endif %}{# runCount #}
+</div> {# .panel... #}
+
+{% if runCount == 0 %}
+<div class="alert alert-info" role="alert">
+{% if list == 'testsets' %}
+There are not any testsets with duration less than {{ durationLimitSec }}s since {{ sinceDate }}!
+{% else %}
+The testset {{ testset }} ({{ project }}) either does not have any {{ list }},
+or the duration of all {{ list }} since {{ sinceDate }} is less than {{ durationLimitSec }}s!
+{% endif %}
+</div>
+{% endif %}{# runCount #}