mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-30 04:26:44 +00:00
Request build output test result information
This commit is contained in:
parent
6538ab86cb
commit
d894302e62
@ -865,6 +865,87 @@ function loadBuildOutputTable(build_info, options={}) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var part_tests = null;
|
||||||
|
|
||||||
|
function updateTestResultData(rows) {
|
||||||
|
|
||||||
|
console.log("updateTestResultData");
|
||||||
|
|
||||||
|
// Request test template data if it has not already been retrieved
|
||||||
|
if (part_tests == null) {
|
||||||
|
inventreeGet(
|
||||||
|
'{% url "api-part-test-template-list" %}',
|
||||||
|
{
|
||||||
|
part: build_info.part,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
async: false,
|
||||||
|
success: function(response) {
|
||||||
|
// Save the list of part tests
|
||||||
|
part_tests = response;
|
||||||
|
|
||||||
|
updateTestResultData(rows);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);;
|
||||||
|
}
|
||||||
|
|
||||||
|
rows.forEach(function(row) {
|
||||||
|
|
||||||
|
// Ignore if this row has already been updated (else, infinite loop!)
|
||||||
|
if (row.passed_tests) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Request test result information for the particular build output
|
||||||
|
inventreeGet(
|
||||||
|
'{% url "api-stock-test-result-list" %}',
|
||||||
|
{
|
||||||
|
stock_item: row.pk,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
success: function(results) {
|
||||||
|
|
||||||
|
// A list of tests that this stock item has passed
|
||||||
|
var passed_tests = {};
|
||||||
|
|
||||||
|
// Keep a list of tests that this stock item has passed
|
||||||
|
results.forEach(function(result) {
|
||||||
|
if (result.result) {
|
||||||
|
passed_tests[result.key] = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
row.passed_tests = passed_tests;
|
||||||
|
|
||||||
|
$(table).bootstrapTable('updateByUniqueId', row.pk, row, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the number of 'passed' tests in a given row
|
||||||
|
function countPassedTests(row) {
|
||||||
|
if (part_tests == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
var results = row.passed_tests || {};
|
||||||
|
var n = 0;
|
||||||
|
|
||||||
|
part_tests.forEach(function(test) {
|
||||||
|
if (results[test.key] || false) {
|
||||||
|
n += 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
var table_loaded = false;
|
||||||
|
|
||||||
$(table).inventreeTable({
|
$(table).inventreeTable({
|
||||||
url: '{% url "api-stock-list" %}',
|
url: '{% url "api-stock-list" %}',
|
||||||
queryParams: filters,
|
queryParams: filters,
|
||||||
@ -885,11 +966,21 @@ function loadBuildOutputTable(build_info, options={}) {
|
|||||||
formatNoMatches: function() {
|
formatNoMatches: function() {
|
||||||
return '{% trans "No active build outputs found" %}';
|
return '{% trans "No active build outputs found" %}';
|
||||||
},
|
},
|
||||||
onPostBody: function() {
|
onPostBody: function(rows) {
|
||||||
|
console.log("onPostBody");
|
||||||
// Add callbacks for the buttons
|
// Add callbacks for the buttons
|
||||||
setupBuildOutputButtonCallbacks();
|
setupBuildOutputButtonCallbacks();
|
||||||
|
},
|
||||||
|
onLoadSuccess: function(rows) {
|
||||||
|
|
||||||
$(table).bootstrapTable('expandAllRows');
|
console.log("onLoadSuccess");
|
||||||
|
|
||||||
|
updateTestResultData(rows);
|
||||||
|
},
|
||||||
|
onRefresh: function() {
|
||||||
|
console.log("onRefresh");
|
||||||
|
// var rows = $(table).bootstrapTable('getData');
|
||||||
|
// updateTestResultData(rows);
|
||||||
},
|
},
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
@ -945,10 +1036,44 @@ function loadBuildOutputTable(build_info, options={}) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'allocated',
|
field: 'allocated',
|
||||||
title: '{% trans "Allocated Parts" %}',
|
title: '{% trans "Allocated Stock" %}',
|
||||||
visible: has_tracked_items,
|
visible: has_tracked_items,
|
||||||
|
switchable: false,
|
||||||
formatter: function(value, row) {
|
formatter: function(value, row) {
|
||||||
return `<div id='output-progress-${row.pk}'><span class='fas fa-spin fa-spinner'></span></div>`;
|
return `<div id='output-progress-${row.pk}'><span class='fas fa-spin fa-spinner'></span></div>`;
|
||||||
|
},
|
||||||
|
sorter: function(value_a, value_b, row_a, row_b) {
|
||||||
|
// TODO: Custom sorter for "allocated stock" column
|
||||||
|
return 0;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'tests',
|
||||||
|
title: '{% trans "Tests" %}',
|
||||||
|
sortable: false,
|
||||||
|
switchable: true,
|
||||||
|
formatter: function(value, row) {
|
||||||
|
if (part_tests == null || part_tests.length == 0) {
|
||||||
|
return `<em>{% trans "No tests found " %}</em>`;
|
||||||
|
}
|
||||||
|
|
||||||
|
var n_passed = countPassedTests(row);
|
||||||
|
|
||||||
|
var progress = makeProgressBar(
|
||||||
|
n_passed,
|
||||||
|
part_tests.length,
|
||||||
|
{
|
||||||
|
max_width: '150px',
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
return progress;
|
||||||
|
},
|
||||||
|
sorter: function(a, b, row_a, row_b) {
|
||||||
|
var n_a = countPassedTests(row_a);
|
||||||
|
var n_b = countPassedTests(row_b);
|
||||||
|
|
||||||
|
return n_a > n_b ? 1 : -1;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user