Filter BOM table by "trackable" status

This commit is contained in:
Oliver Walters 2020-10-26 13:53:34 +11:00
parent 1a4eb3f870
commit 24ab48ef4c
3 changed files with 40 additions and 18 deletions

View File

@ -47,6 +47,9 @@
{% endif %}
<button title='{% trans "Export Bill of Materials" %}' class='btn btn-default action-button' id='download-bom' type='button'><span class='fas fa-file-download'></span></button>
{% endif %}
<div class='filter-list' id='filter-list-bom'>
<!-- Empty div (will be filled out with avilable BOM filters) -->
</div>
</div>
<table class='table table-striped table-condensed' data-toolbar="#button-toolbar" id='bom-table'>

View File

@ -103,7 +103,30 @@ function loadBomTable(table, options) {
* BOM data are retrieved from the server via AJAX query
*/
// Construct the table columns
var params = {
part: options.parent_id,
ordering: 'name',
}
if (options.part_detail) {
params.part_detail = true;
}
if (options.sub_part_detail) {
params.sub_part_detail = true;
}
var filters = {};
if (!options.disableFilters) {
filters = loadTableFilters("bom");
}
for (var key in params) {
filters[key] = params[key];
}
setupFilterList("bom", $(table));
var cols = [];
@ -128,7 +151,7 @@ function loadBomTable(table, options) {
var html = imageHoverIcon(row.sub_part_detail.thumbnail) + renderLink(row.sub_part_detail.full_name, url);
if (row.sub_part_detail.trackable) {
html += `<span title='{% trans "Trackable part" %}' class='fas fa-route label-right'></span>`;
html += `<span title='{% trans "Trackable part" %}' class='fas fa-directions label-right'></span>`;
}
// Display an extra icon if this part is an assembly
@ -270,21 +293,6 @@ function loadBomTable(table, options) {
});
}
// Configure the table (bootstrap-table)
var params = {
part: options.parent_id,
ordering: 'name',
}
if (options.part_detail) {
params.part_detail = true;
}
if (options.sub_part_detail) {
params.sub_part_detail = true;
}
// Function to request BOM data for sub-items
// This function may be called recursively for multi-level BOMs
function requestSubItems(bom_pk, part_pk) {
@ -337,7 +345,8 @@ function loadBomTable(table, options) {
},
formatNoMatches: function() { return "{% trans "No BOM items found" %}"; },
clickToSelect: true,
queryParams: params,
queryParams: filters,
original: params,
columns: cols,
url: options.bom_url,
onPostBody: function() {

View File

@ -11,6 +11,16 @@ function getAvailableTableFilters(tableKey) {
tableKey = tableKey.toLowerCase();
// Filters for Bill of Materials table
if (tableKey == "bom") {
return {
trackable: {
type: 'bool',
title: '{% trans "Trackable Part" %}'
}
};
}
// Filters for the "customer stock" table (really a subset of "stock")
if (tableKey == "customerstock") {
return {