Skeleton for AJAXified build table

This commit is contained in:
Oliver Walters 2020-04-11 19:36:01 +10:00
parent 2f71233d62
commit a4e45eab13
5 changed files with 73 additions and 18 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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];

View File

@ -23,6 +23,9 @@ InvenTree | Build List
<hr>
<table class='table table-striped table-condensed' id='build-table'>
</table>
{% 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: [

View File

@ -105,6 +105,7 @@ InvenTree
<script type='text/javascript' src="{% static 'script/inventree/bom.js' %}"></script>
<script type='text/javascript' src="{% static 'script/inventree/filters.js' %}"></script>
<script type='text/javascript' src="{% static 'script/inventree/tables.js' %}"></script>
<script type='text/javascript' src="{% static 'script/inventree/build.js' %}"></script>
<script type='text/javascript' src="{% static 'script/inventree/modals.js' %}"></script>
<script type='text/javascript' src="{% static 'script/inventree/order.js' %}"></script>
<script type='text/javascript' src="{% static 'script/inventree/notification.js' %}"></script>