Merge pull request #914 from SchrodingersGat/recursive-bom

Bugfix: Recursive BOM display
This commit is contained in:
Oliver 2020-08-20 09:01:26 +10:00 committed by GitHub
commit 71f3662ebc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -280,7 +280,9 @@ function loadBomTable(table, options) {
params.sub_part_detail = true; params.sub_part_detail = true;
} }
function requestSubItems(part_pk) { // Function to request BOM data for sub-items
// This function may be called recursively for multi-level BOMs
function requestSubItems(bom_pk, part_pk) {
inventreeGet( inventreeGet(
options.bom_url, options.bom_url,
@ -291,10 +293,17 @@ function loadBomTable(table, options) {
{ {
success: function(response) { success: function(response) {
for (var idx = 0; idx < response.length; idx++) { for (var idx = 0; idx < response.length; idx++) {
response[idx].parentId = part_pk;
response[idx].parentId = bom_pk;
if (response[idx].sub_part_detail.assembly) {
requestSubItems(response[idx].pk, response[idx].sub_part)
}
} }
table.bootstrapTable('append', response); table.bootstrapTable('append', response);
table.treegrid('collapseAll');
}, },
error: function() { error: function() {
console.log('Error requesting BOM for part=' + part_pk); console.log('Error requesting BOM for part=' + part_pk);
@ -303,13 +312,14 @@ function loadBomTable(table, options) {
) )
} }
table.bootstrapTable({ table.inventreeTable({
treeEnable: true, treeEnable: true,
rootParentId: options.parent_id, rootParentId: options.parent_id,
idField: 'sub_part', idField: 'pk',
uniqueId: 'pk', uniqueId: 'pk',
parentIdField: 'part', parentIdField: 'parentId',
treeShowField: 'sub_part', treeShowField: 'sub_part',
showColumns: true,
sortable: true, sortable: true,
search: true, search: true,
rowStyle: function(row, index) { rowStyle: function(row, index) {
@ -351,7 +361,7 @@ function loadBomTable(table, options) {
table.bootstrapTable('updateRow', idx, row, true); table.bootstrapTable('updateRow', idx, row, true);
if (row.sub_part_detail.assembly) { if (row.sub_part_detail.assembly) {
requestSubItems(row.sub_part); requestSubItems(row.pk, row.sub_part);
} }
} }
}, },