Skip to content

Commit

Permalink
Merge 7fe98df into 2bca80a
Browse files Browse the repository at this point in the history
  • Loading branch information
atodorov committed Apr 15, 2020
2 parents 2bca80a + 7fe98df commit 4244a76
Show file tree
Hide file tree
Showing 3 changed files with 106 additions and 1 deletion.
72 changes: 72 additions & 0 deletions tcms/testruns/static/testruns/js/get.js
@@ -1,3 +1,5 @@
let executionStatuses;

$(document).ready(() => {

$('.bootstrap-switch').bootstrapSwitch();
Expand All @@ -18,4 +20,74 @@ $(document).ready(() => {

// bind everything in tags table
tagsCard('TestRun', testRunId, { run: testRunId }, permRemoveTag);

jsonRPC('TestExecutionStatus.filter', {}, data => {
executionStatuses = data
drawPercentBar(testRunId)
})
})

function drawPercentBar(testRunId) {

jsonRPC('TestExecution.filter', { 'run_id': testRunId }, testExecutions => {

let positiveCount = 0;
let negativeCount = 0;
let allCount = testExecutions.length;
let statusCount = {}
executionStatuses.forEach(s => statusCount[s.name] = { count: 0, id: s.id })

testExecutions.forEach(testExecution => {
const executionStatus = executionStatuses.find(s => s.id === testExecution.status_id)

if (executionStatus.weight > 0) {
positiveCount++
} else if (executionStatus.weight < 0) {
negativeCount++
}

statusCount[executionStatus.name].count++
})

renderProgressBars(positiveCount, negativeCount, allCount)
renderCountPerStatusList(statusCount)
})
}

function renderProgressBars(positiveCount, negativeCount, allCount) {

const positivePercent = +(positiveCount / allCount * 100).toFixed(2)
const positiveBar = $(".progress > .progress-completed")
if (positivePercent) {
positiveBar.text(`${positivePercent}%`)
}
positiveBar.css('width', `${positivePercent}%`)
positiveBar.attr('aria-valuenow', `${positivePercent}`)

const negativePercent = +(negativeCount / allCount * 100).toFixed(2)
const negativeBar = $('.progress > .progress-failed')
if (negativePercent) {
negativeBar.text(`${negativePercent}%`)
}
negativeBar.css('width', `${negativePercent}%`)
negativeBar.attr('aria-valuenow', `${negativePercent}`)

const neutralPercent = +(100 - (negativePercent + positivePercent)).toFixed(2)
const neutralBar = $('.progress > .progress-bar-remaining')
if (neutralPercent) {
neutralBar.text(`${neutralPercent}%`)
}
neutralBar.css('width', `${neutralPercent}%`)
neutralBar.attr('aria-valuenow', `${neutralPercent}`)

$(".total-execution-count").text(allCount)
}

function renderCountPerStatusList(statusCount) {
for (var status in statusCount) {
const status_id = statusCount[status].id;

$(`#count-for-status-${status_id}`).attr('href', `?status_id=${status_id}`);
$(`#count-for-status-${status_id}`).text(statusCount[status].count);
}
}
28 changes: 28 additions & 0 deletions tcms/testruns/templates/testruns/get.html
Expand Up @@ -78,10 +78,38 @@ <h2 class="card-pf-title" style="text-align: left">
<div class="card-pf-body"></div>
</div>
</div>

<div class="col-xs-12 col-sm-6 col-md-3">
<div class="card-pf card-pf-accented card-pf-aggregate-status">
<div class="card-pf-body">
<div class="progress">
<div class="progress-bar progress-completed progress-bar-success progress-bar-striped" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="font-weight: bold;" data-toggle="tooltip"></div>
<div class="progress-bar progress-bar-remaining" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="font-weight: bold; color: black;" data-toggle="tooltip"></div>
<div class="progress-bar progress-failed progress-bar-danger progress-bar-striped" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="font-weight: bold;" data-toggle="tooltip"></div>
</div>
<div>
<ul class="count-per-status-container list-group" style="columns: 2; margin: 0;">
{% for status in execution_statuses%}
<li class="list-group-item" style="padding:0; text-align:left">
<label>{{ status.name }}</label> - <a id="count-for-status-{{ status.pk }}" href="#"></a>
</li>
{% endfor %}
</ul>

<div style="text-align: center">
<label>{% trans "TOTAL" %}</label> - <a href="{% url 'testruns-get' object.pk %}" class="total-execution-count"></a>
</div>
</div>
</div>
</div>
</div>

<div class="col-xs-12 col-sm-6 col-md-3">
{% include 'include/tags_card.html' with add_perm=perms.testruns.add_testruntag %}
</div>
</div> <!-- /row -->

<div class="row row-cards-pf">
<div class="col-xs-12 col-sm-6 col-md-6">
{% include 'include/attachments.html' %}
</div>
Expand Down
7 changes: 6 additions & 1 deletion tcms/testruns/views.py
Expand Up @@ -22,7 +22,7 @@
from tcms.testcases.views import get_selected_testcases
from tcms.testplans.models import TestPlan
from tcms.testruns.forms import BaseRunForm, NewRunForm, SearchRunForm
from tcms.testruns.models import TestExecution, TestRun
from tcms.testruns.models import TestExecution, TestExecutionStatus, TestRun

User = get_user_model() # pylint: disable=invalid-name

Expand Down Expand Up @@ -131,6 +131,11 @@ class GetTestRunView(DetailView): # pylint: disable=missing-permission-required
model = TestRun
response_class = ModifySettingsTemplateResponse

def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['execution_statuses'] = TestExecutionStatus.objects.order_by('-weight', 'name')
return context

def render_to_response(self, context, **response_kwargs):
self.response_class.modify_settings = modify_settings(
MENU_ITEMS={'append': [
Expand Down

0 comments on commit 4244a76

Please sign in to comment.