diff --git a/InvenTree/InvenTree/static/script/inventree/stock.js b/InvenTree/InvenTree/static/script/inventree/stock.js index 0f5936a5ed..e5892843f3 100644 --- a/InvenTree/InvenTree/static/script/inventree/stock.js +++ b/InvenTree/InvenTree/static/script/inventree/stock.js @@ -91,14 +91,27 @@ function removeStockFilter(key) { return filters; } +function createStockFilter() { + // TODO + console.log("create stock filter"); +} -function updateStockFilterList(filterListElement, filters, table, params) { +function clearStockFilters() { + // TODO + console.log("clear stock filters"); +} + +function updateStockFilterList(filterListElement, table) { + + var filters = loadStockFilters(); for (var key in filters) { $(filterListElement).append(`
  • ${key} = ${filters[key]}x
  • ` ); } - $(filterListElement).find(".close").click(function() { + // Whenever the callback is called, pass the original parameters through + + $(filterListElement).find(".close").click(function(event) { var element = $(this); var tag = element.attr('filter-tag'); @@ -108,12 +121,12 @@ function updateStockFilterList(filterListElement, filters, table, params) { var filters = removeStockFilter(tag); - updateStockFilterList(filterListElement, filters); + reloadStockTable(table, filters); + + // Call this function again to re-update the filterss + updateStockFilterList(filterListElement, table); - // TODO - Reload data in table? }); - - console.log("done"); } @@ -131,6 +144,40 @@ function removeStockRow(e) { $('#' + row).remove(); } + +function reloadStockTable(table, filters) { + /* Reload the stock table. + * + * 'original' is the original query params provided to the + * 'loadStockTable' function. + * These override any user-configured filters. + */ + + + // Override the queryParams for the table + var options = table.bootstrapTable('getOptions'); + + var params = {}; + + var filters = loadStockFilters(); + + for (var key in filters) { + params[key] = filters[key]; + } + + // Original parameters will override + for (var key in options.original) { + params[key] = options.original[key]; + } + + options.queryParams = params; + + table.bootstrapTable('refreshOptions', options); + table.bootstrapTable('refresh'); +} + + + function loadStockTable(table, options) { /* Load data into a stock table with adjustable options. * Fetches data (via AJAX) and loads into a bootstrap table. @@ -151,7 +198,25 @@ function loadStockTable(table, options) { var filters = loadStockFilters(); - updateStockFilterList(filterListElement, filters, table, params); + var original = {}; + + for (var key in params) { + original[key] = params[key]; + } + + // Record a copy of the original query params + // It will be required if the table is refreshed + //options.original = original; + + updateStockFilterList(filterListElement, table); + + $("#filter-add").click(function() { + createStockFilter(); + }); + + $("#filter-clear").click(function() { + clearStockFilters(); + }); // Override the default values, or add new ones for (var key in params) { @@ -167,6 +232,7 @@ function loadStockTable(table, options) { queryParams: filters, customSort: customGroupSorter, groupBy: true, + original: original, groupByField: options.groupByField || 'part', groupByFormatter: function(field, id, data) {