From a7036e939e7d527bb287e6e7e176d2cf6c8b54d4 Mon Sep 17 00:00:00 2001 From: asankov Date: Thu, 30 Jan 2020 15:31:28 +0200 Subject: [PATCH] Update status bar dinamically when changing status of an execution. Fixes #1326 Rework the logic entirelly - leverage the API for fetching data, instead of parsing HTML - redraw all elements when user updates the status of an execution --- tcms/static/js/testrun_actions.js | 64 ++++++++++++++++++++++- tcms/templates/run/status_progress.html | 9 +++- tcms/templates/run/status_statistics.html | 26 +++------ 3 files changed, 78 insertions(+), 21 deletions(-) diff --git a/tcms/static/js/testrun_actions.js b/tcms/static/js/testrun_actions.js index e307bb9648..ca3323d52a 100644 --- a/tcms/static/js/testrun_actions.js +++ b/tcms/static/js/testrun_actions.js @@ -222,7 +222,7 @@ Nitrate.TestRuns.Details.on_load = function() { jQ('.js-caserun-total').bind('click', function() { showCaseRunsWithSelectedStatus(jQ('#id_filter')[0], ''); }); - jQ('.js-status-subtotal').bind('click', function() { + jQ('.status-link-button').bind('click', function() { showCaseRunsWithSelectedStatus(jQ('#id_filter')[0], jQ(this).data('param')); }); }; @@ -302,6 +302,7 @@ function updateExecutionStatus(updateForm, executionId, caseId, executionStatusP const submitButtons = updateForm.find('.submit_button') bindSubmitButtons(updateForm, data.status_id, submitButtons, executionId, caseId) + drawPercentBar() }); }; @@ -649,7 +650,10 @@ function showCommentForm() { jQ(document).ready(function(){ - jsonRPC('TestExecutionStatus.filter', {}, data => executionStatuses = data) + jsonRPC('TestExecutionStatus.filter', {}, data => { + executionStatuses = data + drawPercentBar() + }) jQ('.btnBlueCaserun').mouseover(function() { jQ(this).find('ul').show(); @@ -680,6 +684,62 @@ jQ(document).ready(function(){ }); }); +function drawPercentBar() { + + const testRunId = $('input[name="run_id"]').val() + + 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++ + }) + + const completeCount = positiveCount + negativeCount; + const completePercent = +(completeCount / allCount * 100).toFixed(2); + const failurePercent = +(negativeCount / completeCount * 100).toFixed(2); + $(".progress-bar > .percent > .complete-percent").text(`${completePercent}%`) + $(".progress-bar > .progress-inner").css("width", `${completePercent}%`) + $(".progress-bar > .progress-inner > .progress-failed").css("width", `${failurePercent}%`) + $(".js-caserun-total").text(allCount) + + $(".count-per-status-list").remove() + $(".count-per-status-container").prepend('') + renderCountPerStatusList(statusCount) + }) +} + +function renderCountPerStatusList(statusCount) { + for (var status in statusCount) { + let element = "0"; + const count = statusCount[status].count + if (count) { + className = "status-link-button" + element = `${count}` + } + + $(".count-per-status-list").append(` +
  • + + [${element}] +
  • + `) + } +} + function bulkAddLinkToTestExecution() { var execution_ids = serializeCaseRunFromInputList(jQ('#id_table_cases')[0]); diff --git a/tcms/templates/run/status_progress.html b/tcms/templates/run/status_progress.html index ef35871bb8..b3498b5d3e 100644 --- a/tcms/templates/run/status_progress.html +++ b/tcms/templates/run/status_progress.html @@ -1 +1,8 @@ -
    {{ status_stats.CompletedPercentage|floatformat:0 }}%
    \ No newline at end of file +
    +
    + +
    +
    +
    +
    +
    diff --git a/tcms/templates/run/status_statistics.html b/tcms/templates/run/status_statistics.html index 30dd0fbd52..4d9bbc8e23 100644 --- a/tcms/templates/run/status_statistics.html +++ b/tcms/templates/run/status_statistics.html @@ -2,32 +2,22 @@ {% load static %}
    - {% include "run/status_progress.html" %} -