From a4e45eab1398d02ff5ef4ec6b39cb6eae5e52f17 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 11 Apr 2020 19:36:01 +1000 Subject: [PATCH] Skeleton for AJAXified build table --- .../static/script/inventree/build.js | 50 +++++++++++++++++++ .../static/script/inventree/filters.js | 21 +++++--- .../static/script/inventree/stock.js | 12 ----- InvenTree/build/templates/build/index.html | 7 +++ InvenTree/templates/base.html | 1 + 5 files changed, 73 insertions(+), 18 deletions(-) diff --git a/InvenTree/InvenTree/static/script/inventree/build.js b/InvenTree/InvenTree/static/script/inventree/build.js index 8ec872bbcb..5ed035be86 100644 --- a/InvenTree/InvenTree/static/script/inventree/build.js +++ b/InvenTree/InvenTree/static/script/inventree/build.js @@ -1,3 +1,53 @@ +function loadBuildTable(table, options) { + + var params = options.params || {}; + + var filters = loadTableFilters("build"); + + for (var key in params) { + filters[key] = params[key]; + } + + table.inventreeTable({ + method: 'get', + formatNoMatches: function() { + return "No builds matching query"; + }, + url: options.url, + queryParams: filters, + groupBy: false, + original: params, + columns: [ + { + field: 'pk', + title: 'ID', + visible: false, + }, + { + field: 'title', + title: 'Build', + }, + { + field: 'part', + title: 'Part', + }, + { + field: 'quantity', + title: 'Quantity', + }, + { + field: 'status_text', + title: 'Status', + }, + { + field: 'creation_date', + title: 'Created', + }, + ], + }); +} + + function updateAllocationTotal(id, count, required) { count = parseFloat(count); diff --git a/InvenTree/InvenTree/static/script/inventree/filters.js b/InvenTree/InvenTree/static/script/inventree/filters.js index f1653a860a..b543df4730 100644 --- a/InvenTree/InvenTree/static/script/inventree/filters.js +++ b/InvenTree/InvenTree/static/script/inventree/filters.js @@ -11,22 +11,31 @@ * */ + +function defaultFilters() { + return { + stock: "cascade=1", + build: "", + }; +} + + /** * Load table filters for the given table from session storage * * @param tableKey - String key for the particular table * @param defaults - Default filters for this table e.g. 'cascade=1&location=5' */ -function loadTableFilters(tableKey, defaults) { +function loadTableFilters(tableKey) { var lookup = "table-filters-" + tableKey.toLowerCase(); + var defaults = defaultFilters()[tableKey] || ''; + var filterstring = inventreeLoad(lookup, defaults); var filters = {}; - console.log(`Loaded filters for table '${tableKey}' - ${filterstring}`); - filterstring.split("&").forEach(function(item, index) { item = item.trim(); @@ -73,7 +82,7 @@ function saveTableFilters(tableKey, filters) { */ function removeTableFilter(tableKey, filterKey) { - var filters = loadTableFilters(tableKey, ''); + var filters = loadTableFilters(tableKey); delete filters[filterKey]; @@ -86,7 +95,7 @@ function removeTableFilter(tableKey, filterKey) { function addTableFilter(tableKey, filterKey, filterValue) { - var filters = loadTableFilters(tableKey, ''); + var filters = loadTableFilters(tableKey); filters[filterKey] = filterValue; @@ -114,7 +123,7 @@ function clearTableFilters(tableKey) { */ function getRemainingTableFilters(tableKey) { - var filters = loadTableFilters(tableKey, ''); + var filters = loadTableFilters(tableKey); var remaining = getAvailableTableFilters(tableKey); diff --git a/InvenTree/InvenTree/static/script/inventree/stock.js b/InvenTree/InvenTree/static/script/inventree/stock.js index 58eeefaf41..60f2a8262e 100644 --- a/InvenTree/InvenTree/static/script/inventree/stock.js +++ b/InvenTree/InvenTree/static/script/inventree/stock.js @@ -56,20 +56,8 @@ function loadStockTable(table, options) { original[key] = params[key]; } - // Record a copy of the original query params - // It will be required if the table is refreshed - //options.original = original; - setupFilterList("stock", table, filterListElement); - $("#filter-add").click(function() { - createStockFilter(); - }); - - $("#filter-clear").click(function() { - clearStockFilters(); - }); - // Override the default values, or add new ones for (var key in params) { filters[key] = params[key]; diff --git a/InvenTree/build/templates/build/index.html b/InvenTree/build/templates/build/index.html index fb75d0586a..bd20717f5f 100644 --- a/InvenTree/build/templates/build/index.html +++ b/InvenTree/build/templates/build/index.html @@ -23,6 +23,9 @@ InvenTree | Build List
+ +
+ {% include "build/build_list.html" with builds=active title="Active Builds" completed=False collapse_id='active' %} {% include "build/build_list.html" with builds=completed completed=True title="Completed Builds" collapse_id="complete" %} @@ -44,6 +47,10 @@ InvenTree | Build List }); }); + loadBuildTable($("#build-table"), { + url: "{% url 'api-build-list' %}" + }); + $(".build-table").inventreeTable({ formatNoMatches: function() { return 'No builds found'; }, columns: [ diff --git a/InvenTree/templates/base.html b/InvenTree/templates/base.html index 872d704c06..987e1872f2 100644 --- a/InvenTree/templates/base.html +++ b/InvenTree/templates/base.html @@ -105,6 +105,7 @@ InvenTree +