mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-29 20:16:44 +00:00
Merge pull request #973 from SchrodingersGat/multi-bom-item-delete
Multi bom item delete
This commit is contained in:
commit
65bc23a516
@ -108,6 +108,25 @@ function inventreePut(url, data={}, options={}) {
|
|||||||
if (options.error) {
|
if (options.error) {
|
||||||
options.error(xhr, ajaxOptions, thrownError);
|
options.error(xhr, ajaxOptions, thrownError);
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
complete: function(xhr, status) {
|
||||||
|
if (options.complete) {
|
||||||
|
options.complete(xhr, status);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function inventreeDelete(url, options={}) {
|
||||||
|
/*
|
||||||
|
* Delete a record
|
||||||
|
*/
|
||||||
|
|
||||||
|
options = options || {};
|
||||||
|
|
||||||
|
options.method = 'DELETE';
|
||||||
|
|
||||||
|
inventreePut(url, {}, options);
|
||||||
|
|
||||||
|
}
|
@ -90,6 +90,48 @@
|
|||||||
location.href = "{% url 'part-bom' part.id %}";
|
location.href = "{% url 'part-bom' part.id %}";
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#bom-item-delete').click(function() {
|
||||||
|
|
||||||
|
// Get a list of the selected BOM items
|
||||||
|
var rows = $("#bom-table").bootstrapTable('getSelections');
|
||||||
|
|
||||||
|
// TODO - In the future, display (in the dialog) which items are going to be deleted
|
||||||
|
|
||||||
|
showQuestionDialog(
|
||||||
|
'{% trans "Delete selected BOM items?" %}',
|
||||||
|
'{% trans "All selected BOM items will be deleted" %}',
|
||||||
|
{
|
||||||
|
accept: function() {
|
||||||
|
|
||||||
|
// Delete each row one at a time!
|
||||||
|
function deleteRow(idx) {
|
||||||
|
|
||||||
|
if (idx >= rows.length) {
|
||||||
|
// All selected rows deleted - reload the table
|
||||||
|
$("#bom-table").bootstrapTable('refresh');
|
||||||
|
}
|
||||||
|
|
||||||
|
var row = rows[idx];
|
||||||
|
|
||||||
|
var url = `/api/bom/${row.pk}/`;
|
||||||
|
|
||||||
|
inventreeDelete(
|
||||||
|
url,
|
||||||
|
{
|
||||||
|
complete: function(xhr, status) {
|
||||||
|
deleteRow(idx + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start the deletion!
|
||||||
|
deleteRow(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
$('#bom-upload').click(function() {
|
$('#bom-upload').click(function() {
|
||||||
location.href = "{% url 'upload-bom' part.id %}";
|
location.href = "{% url 'upload-bom' part.id %}";
|
||||||
});
|
});
|
||||||
|
@ -39,7 +39,6 @@ function removeRowFromBomWizard(e) {
|
|||||||
if (colNum >= 3) {
|
if (colNum >= 3) {
|
||||||
var cell = $(this).find('td:eq(1)');
|
var cell = $(this).find('td:eq(1)');
|
||||||
cell.text(rowNum++);
|
cell.text(rowNum++);
|
||||||
console.log("Row: " + rowNum);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -106,26 +105,16 @@ function loadBomTable(table, options) {
|
|||||||
|
|
||||||
// Construct the table columns
|
// Construct the table columns
|
||||||
|
|
||||||
var cols = [
|
var cols = [];
|
||||||
{
|
|
||||||
field: 'pk',
|
|
||||||
title: 'ID',
|
|
||||||
visible: false,
|
|
||||||
switchable: false,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
if (options.editable) {
|
if (options.editable) {
|
||||||
|
|
||||||
/*
|
|
||||||
// TODO - Enable multi-select functionality
|
|
||||||
cols.push({
|
cols.push({
|
||||||
|
field: 'ID',
|
||||||
|
title: '',
|
||||||
checkbox: true,
|
checkbox: true,
|
||||||
title: 'Select',
|
visible: true,
|
||||||
searchable: false,
|
switchable: false,
|
||||||
sortable: false,
|
|
||||||
});
|
});
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Part column
|
// Part column
|
||||||
@ -234,16 +223,23 @@ function loadBomTable(table, options) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (options.editable) {
|
if (options.editable) {
|
||||||
|
|
||||||
cols.push({
|
cols.push({
|
||||||
|
title: '{% trans "Actions" %}',
|
||||||
|
switchable: false,
|
||||||
|
field: 'pk',
|
||||||
|
visible: true,
|
||||||
formatter: function(value, row, index, field) {
|
formatter: function(value, row, index, field) {
|
||||||
|
|
||||||
if (row.part == options.parent_id) {
|
if (row.part == options.parent_id) {
|
||||||
|
|
||||||
var bValidate = "<button title='{% trans "Validate BOM Item" %}' class='bom-validate-button btn btn-default btn-glyph' type='button' pk='" + row.pk + "'><span class='fas fa-check-circle icon-blue'/></button>";
|
var bValidate = `<button title='{% trans "Validate BOM Item" %}' class='bom-validate-button btn btn-default btn-glyph' type='button' pk='${row.pk}'><span class='fas fa-check-circle icon-blue'/></button>`;
|
||||||
var bValid = "<span title='{% trans "This line has been validated" %}' class='fas fa-check-double icon-green'/>";
|
|
||||||
|
var bValid = `<span title='{% trans "This line has been validated" %}' class='fas fa-check-double icon-green'/>`;
|
||||||
|
|
||||||
var bEdit = "<button title='{% trans "Edit BOM Item" %}' class='bom-edit-button btn btn-default btn-glyph' type='button' url='/part/bom/" + row.pk + "/edit'><span class='fas fa-edit'/></button>";
|
var bEdit = `<button title='{% trans "Edit BOM Item" %}' class='bom-edit-button btn btn-default btn-glyph' type='button' pk='${row.pk}'><span class='fas fa-edit'></span></button>`;
|
||||||
var bDelt = "<button title='{% trans "Delete BOM Item" %}' class='bom-delete-button btn btn-default btn-glyph' type='button' url='/part/bom/" + row.pk + "/delete'><span class='fas fa-trash-alt icon-red'/></button>";
|
|
||||||
|
var bDelt = `<button title='{% trans "Delete BOM Item" %}' class='bom-delete-button btn btn-default btn-glyph' type='button' pk='${row.pk}'><span class='fas fa-trash-alt icon-red'></span></button>`;
|
||||||
|
|
||||||
var html = "<div class='btn-group' role='group'>";
|
var html = "<div class='btn-group' role='group'>";
|
||||||
|
|
||||||
@ -314,10 +310,10 @@ function loadBomTable(table, options) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
table.inventreeTable({
|
table.inventreeTable({
|
||||||
treeEnable: true,
|
treeEnable: !options.editable,
|
||||||
rootParentId: options.parent_id,
|
rootParentId: options.parent_id,
|
||||||
idField: 'pk',
|
idField: 'pk',
|
||||||
uniqueId: 'pk',
|
//uniqueId: 'pk',
|
||||||
parentIdField: 'parentId',
|
parentIdField: 'parentId',
|
||||||
treeShowField: 'sub_part',
|
treeShowField: 'sub_part',
|
||||||
showColumns: true,
|
showColumns: true,
|
||||||
@ -333,37 +329,43 @@ function loadBomTable(table, options) {
|
|||||||
},
|
},
|
||||||
formatNoMatches: function() { return "{% trans "No BOM items found" %}"; },
|
formatNoMatches: function() { return "{% trans "No BOM items found" %}"; },
|
||||||
clickToSelect: true,
|
clickToSelect: true,
|
||||||
queryParams: function(p) {
|
queryParams: params,
|
||||||
return params;
|
|
||||||
},
|
|
||||||
columns: cols,
|
columns: cols,
|
||||||
url: options.bom_url,
|
url: options.bom_url,
|
||||||
onPostBody: function() {
|
onPostBody: function() {
|
||||||
table.treegrid({
|
|
||||||
treeColumn: 0,
|
if (!options.editable) {
|
||||||
onExpand: function() {
|
table.treegrid({
|
||||||
}
|
treeColumn: 0,
|
||||||
});
|
onExpand: function() {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onLoadSuccess: function() {
|
onLoadSuccess: function() {
|
||||||
|
|
||||||
var data = table.bootstrapTable('getData');
|
if (options.editable) {
|
||||||
|
table.bootstrapTable('uncheckAll');
|
||||||
|
} else {
|
||||||
|
|
||||||
for (var idx = 0; idx < data.length; idx++) {
|
var data = table.bootstrapTable('getData');
|
||||||
var row = data[idx];
|
|
||||||
|
|
||||||
// If a row already has a parent ID set, it's already been updated!
|
for (var idx = 0; idx < data.length; idx++) {
|
||||||
if (row.parentId) {
|
var row = data[idx];
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set the parent ID of the top-level rows
|
// If a row already has a parent ID set, it's already been updated!
|
||||||
row.parentId = options.parent_id;
|
if (row.parentId) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
table.bootstrapTable('updateRow', idx, row, true);
|
// Set the parent ID of the top-level rows
|
||||||
|
row.parentId = options.parent_id;
|
||||||
|
|
||||||
if (row.sub_part_detail.assembly) {
|
table.bootstrapTable('updateRow', idx, row, true);
|
||||||
requestSubItems(row.pk, row.sub_part);
|
|
||||||
|
if (row.sub_part_detail.assembly) {
|
||||||
|
requestSubItems(row.pk, row.sub_part);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -373,29 +375,39 @@ function loadBomTable(table, options) {
|
|||||||
if (options.editable) {
|
if (options.editable) {
|
||||||
|
|
||||||
table.on('click', '.bom-delete-button', function() {
|
table.on('click', '.bom-delete-button', function() {
|
||||||
var button = $(this);
|
|
||||||
|
var pk = $(this).attr('pk');
|
||||||
|
var url = `/part/bom/${pk}/delete/`;
|
||||||
|
|
||||||
launchModalForm(button.attr('url'), {
|
launchModalForm(
|
||||||
success: function() {
|
url,
|
||||||
reloadBomTable(table);
|
{
|
||||||
}
|
success: function() {
|
||||||
});
|
reloadBomTable(table);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
table.on('click', '.bom-edit-button', function() {
|
table.on('click', '.bom-edit-button', function() {
|
||||||
var button = $(this);
|
|
||||||
|
var pk = $(this).attr('pk');
|
||||||
|
var url = `/part/bom/${pk}/edit/`;
|
||||||
|
|
||||||
launchModalForm(button.attr('url'), {
|
launchModalForm(
|
||||||
success: function() {
|
url,
|
||||||
reloadBomTable(table);
|
{
|
||||||
}
|
success: function() {
|
||||||
});
|
reloadBomTable(table);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
table.on('click', '.bom-validate-button', function() {
|
table.on('click', '.bom-validate-button', function() {
|
||||||
var button = $(this);
|
|
||||||
|
var pk = $(this).attr('pk');
|
||||||
var url = '/api/bom/' + button.attr('pk') + '/validate/';
|
var url = `/api/bom/${pk}/validate/`;
|
||||||
|
|
||||||
inventreePut(
|
inventreePut(
|
||||||
url,
|
url,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user