2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-29 12:06:44 +00:00

Refactor build page template

- Only load build outputs table as required
This commit is contained in:
Oliver Walters 2022-04-28 22:59:24 +10:00
parent b63352ce20
commit cb7c4396fb
2 changed files with 89 additions and 104 deletions

View File

@ -401,110 +401,107 @@ function reloadTable() {
$('#allocation-table-untracked').bootstrapTable('refresh'); $('#allocation-table-untracked').bootstrapTable('refresh');
} }
// Get the list of BOM items required for this build onPanelLoad('outputs', function() {
inventreeGet( {% if build.active %}
'{% url "api-bom-list" %}',
{ var build_info = {
pk: {{ build.pk }},
part: {{ build.part.pk }}, part: {{ build.part.pk }},
sub_part_detail: true, quantity: {{ build.quantity }},
}, {% if build.take_from %}
{ source_location: {{ build.take_from.pk }},
success: function(response) { {% endif %}
tracked_parts: true,
};
var build_info = { loadBuildOutputTable(build_info);
pk: {{ build.pk }},
part: {{ build.part.pk }},
quantity: {{ build.quantity }},
bom_items: response,
{% if build.take_from %}
source_location: {{ build.take_from.pk }},
{% endif %}
{% if build.has_tracked_bom_items %}
tracked_parts: true,
{% else %}
tracked_parts: false,
{% endif %}
};
{% if build.active %} linkButtonsToSelection(
loadBuildOutputTable(build_info); '#build-output-table',
linkButtonsToSelection( [
'#build-output-table', '#output-options',
[ '#multi-output-complete',
'#output-options', '#multi-output-delete',
'#multi-output-complete', ]
'#multi-output-delete', );
]
);
$('#multi-output-complete').click(function() { $('#multi-output-complete').click(function() {
var outputs = $('#build-output-table').bootstrapTable('getSelections'); var outputs = $('#build-output-table').bootstrapTable('getSelections');
completeBuildOutputs( completeBuildOutputs(
build_info.pk, build_info.pk,
outputs, outputs,
{ {
success: function() { success: function() {
// Reload the "in progress" table // Reload the "in progress" table
$('#build-output-table').bootstrapTable('refresh'); $('#build-output-table').bootstrapTable('refresh');
// Reload the "completed" table // Reload the "completed" table
$('#build-stock-table').bootstrapTable('refresh'); $('#build-stock-table').bootstrapTable('refresh');
}
}
);
});
$('#multi-output-delete').click(function() {
var outputs = $('#build-output-table').bootstrapTable('getSelections');
deleteBuildOutputs(
build_info.pk,
outputs,
{
success: function() {
// Reload the "in progress" table
$('#build-output-table').bootstrapTable('refresh');
// Reload the "completed" table
$('#build-stock-table').bootstrapTable('refresh');
}
}
)
});
$('#incomplete-output-print-label').click(function() {
var outputs = $('#build-output-table').bootstrapTable('getSelections');
if (outputs.length == 0) {
outputs = $('#build-output-table').bootstrapTable('getData');
} }
}
);
});
var stock_id_values = []; $('#multi-output-delete').click(function() {
var outputs = $('#build-output-table').bootstrapTable('getSelections');
outputs.forEach(function(output) { deleteBuildOutputs(
stock_id_values.push(output.pk); build_info.pk,
}); outputs,
{
success: function() {
// Reload the "in progress" table
$('#build-output-table').bootstrapTable('refresh');
printStockItemLabels(stock_id_values); // Reload the "completed" table
$('#build-stock-table').bootstrapTable('refresh');
});
{% endif %}
{% if build.active and build.has_untracked_bom_items %}
// Load allocation table for un-tracked parts
loadBuildOutputAllocationTable(
build_info,
null,
{
search: true,
} }
); }
{% endif %} )
});
$('#incomplete-output-print-label').click(function() {
var outputs = $('#build-output-table').bootstrapTable('getSelections');
if (outputs.length == 0) {
outputs = $('#build-output-table').bootstrapTable('getData');
} }
var stock_id_values = [];
outputs.forEach(function(output) {
stock_id_values.push(output.pk);
});
printStockItemLabels(stock_id_values);
});
{% endif %}
});
{% if build.active and build.has_untracked_bom_items %}
var build_info = {
pk: {{ build.pk }},
part: {{ build.part.pk }},
quantity: {{ build.quantity }},
{% if build.take_from %}
source_location: {{ build.take_from.pk }},
{% endif %}
tracked_parts: false,
};
// Load allocation table for un-tracked parts
loadBuildOutputAllocationTable(
build_info,
null,
{
search: true,
} }
); );
{% endif %}
$('#btn-create-output').click(function() { $('#btn-create-output').click(function() {

View File

@ -741,18 +741,6 @@ function loadBuildOutputTable(build_info, options={}) {
params.is_building = true; params.is_building = true;
params.build = build_info.pk; params.build = build_info.pk;
// Construct a list of "tracked" BOM items
var tracked_bom_items = [];
var has_tracked_items = false;
build_info.bom_items.forEach(function(bom_item) {
if (bom_item.sub_part_detail.trackable) {
tracked_bom_items.push(bom_item);
has_tracked_items = true;
};
});
var filters = {}; var filters = {};
for (var key in params) { for (var key in params) {
@ -1031,7 +1019,7 @@ function loadBuildOutputTable(build_info, options={}) {
sortable: true, sortable: true,
search: false, search: false,
sidePagination: 'client', sidePagination: 'client',
detailView: has_tracked_items, detailView: true,
detailFilter: function(index, row) { detailFilter: function(index, row) {
return true; return true;
}, },
@ -1105,7 +1093,7 @@ function loadBuildOutputTable(build_info, options={}) {
{ {
field: 'allocated', field: 'allocated',
title: '{% trans "Allocated Stock" %}', title: '{% trans "Allocated Stock" %}',
visible: has_tracked_items, visible: true,
switchable: false, 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>`;