Merge pull request #939 from SchrodingersGat/column-remembering

Make checkbox field non-switchable for stock table
This commit is contained in:
Oliver 2020-08-31 22:08:56 +10:00 committed by GitHub
commit baaabd00d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 81 additions and 1 deletions

View File

@ -80,11 +80,28 @@ function reloadTable(table, filters) {
}
function visibleColumnString(columns) {
/* Generate a list of "visible" columns to save to file. */
var fields = [];
columns.forEach(function(column) {
if (column.switchable && column.visible) {
fields.push(column.field);
}
});
return fields.join(',');
}
/* Wrapper function for bootstrapTable.
* Sets some useful defaults, and manage persistent settings.
*/
$.fn.inventreeTable = function(options) {
var table = this;
var tableName = options.name || 'table';
var varName = tableName + '-pagesize';
@ -95,14 +112,51 @@ $.fn.inventreeTable = function(options) {
options.rememberOrder = true;
options.sortable = true;
options.search = true;
options.showColumns = true;
// Callback to save pagination data
options.onPageChange = function(number, size) {
inventreeSave(varName, size);
};
// Callback when a column is changed
options.onColumnSwitch = function(field, checked) {
console.log(`${field} -> ${checked}`);
var columns = table.bootstrapTable('getVisibleColumns');
var text = visibleColumnString(columns);
// Save visible columns
inventreeSave(`table_columns_${tableName}`, text);
};
// Standard options for all tables
this.bootstrapTable(options);
table.bootstrapTable(options);
// Load visible column list from memory
// Load visible column list
var visibleColumns = inventreeLoad(`table_columns_${tableName}`, null);
// If a set of visible columns has been saved, load!
if (visibleColumns) {
var columns = visibleColumns.split(",");
// Which columns are currently visible?
var visible = table.bootstrapTable('getVisibleColumns');
if (visible) {
visible.forEach(function(column) {
// Visible field should *not* be visible! (hide it!)
if (column.switchable && !columns.includes(column.field)) {
table.bootstrapTable('hideColumn', column.field);
}
});
} else {
console.log('Could not get list of visible columns!');
}
}
}
function customGroupSorter(sortName, sortOrder, sortData) {

View File

@ -127,6 +127,7 @@ function setupCallbacks() {
$("#po-table").inventreeTable({
onPostBody: setupCallbacks,
name: 'purchaseorder',
formatNoMatches: function() { return "{% trans 'No line items found' %}"; },
queryParams: {
order: {{ order.id }},
@ -138,6 +139,7 @@ $("#po-table").inventreeTable({
field: 'pk',
title: 'ID',
visible: false,
switchable: false,
},
{
field: 'part',

View File

@ -190,6 +190,7 @@ $("#so-lines-table").inventreeTable({
field: 'pk',
title: 'ID',
visible: false,
switchable: false,
},
{
sortable: true,

View File

@ -29,6 +29,7 @@
field: 'pk',
title: 'ID',
visible: false,
switchable: false,
},
{
field: 'part_detail',

View File

@ -37,6 +37,7 @@
field: 'pk',
title: 'ID',
visible: false,
switchable: false,
},
{
field: 'symbol',

View File

@ -31,6 +31,7 @@
field: 'pk',
title: 'ID',
visible: false,
switchable: false,
},
{
field: 'name',

View File

@ -111,6 +111,7 @@ function loadBomTable(table, options) {
field: 'pk',
title: 'ID',
visible: false,
switchable: false,
},
];
@ -320,6 +321,7 @@ function loadBomTable(table, options) {
parentIdField: 'parentId',
treeShowField: 'sub_part',
showColumns: true,
name: 'bom',
sortable: true,
search: true,
rowStyle: function(row, index) {

View File

@ -21,12 +21,14 @@ function loadBuildTable(table, options) {
url: options.url,
queryParams: filters,
groupBy: false,
name: 'builds',
original: params,
columns: [
{
field: 'pk',
title: 'ID',
visible: false,
switchable: false,
},
{
field: 'title',

View File

@ -27,16 +27,20 @@ function loadCompanyTable(table, url, options={}) {
queryParams: filters,
groupBy: false,
formatNoMatches: function() { return "{% trans "No company information found" %}"; },
showColumns: true,
name: 'company',
columns: [
{
field: 'pk',
title: 'ID',
visible: false,
switchable: false,
},
{
field: 'name',
title: '{% trans "Company" %}',
sortable: true,
switchable: false,
formatter: function(value, row, index, field) {
var html = imageHoverIcon(row.image) + renderLink(value, row.url);
@ -97,11 +101,13 @@ function loadSupplierPartTable(table, url, options) {
url: url,
method: 'get',
queryParams: filters,
name: 'supplierparts',
groupBy: false,
formatNoMatches: function() { return "{% trans "No supplier parts found" %}"; },
columns: [
{
checkbox: true,
switchable: false,
},
{
sortable: true,

View File

@ -121,6 +121,7 @@ function loadPurchaseOrderTable(table, options) {
$(table).inventreeTable({
url: options.url,
queryParams: filters,
name: 'purchaseorder',
groupBy: false,
original: options.params,
formatNoMatches: function() { return "{% trans "No purchase orders found" %}"; },
@ -129,6 +130,7 @@ function loadPurchaseOrderTable(table, options) {
field: 'pk',
title: 'ID',
visible: false,
switchable: false,
},
{
sortable: true,
@ -194,6 +196,7 @@ function loadSalesOrderTable(table, options) {
$(table).inventreeTable({
url: options.url,
queryParams: filters,
name: 'salesorder',
groupBy: false,
original: options.params,
formatNoMatches: function() { return "{% trans "No sales orders found" %}"; },
@ -202,6 +205,7 @@ function loadSalesOrderTable(table, options) {
field: 'pk',
title: 'ID',
visible: false,
switchable: false,
},
{
sortable: true,

View File

@ -237,6 +237,7 @@ function loadPartTable(table, url, options={}) {
method: 'get',
queryParams: filters,
groupBy: false,
name: 'part',
original: params,
formatNoMatches: function() { return "{% trans "No parts found" %}"; },
columns: columns,
@ -338,6 +339,7 @@ function loadPartTestTemplateTable(table, options) {
},
url: "{% url 'api-part-test-template-list' %}",
queryParams: filters,
name: 'testtemplate',
original: original,
columns: [
{

View File

@ -73,6 +73,7 @@ function loadStockTestResultsTable(table, options) {
table.inventreeTable({
url: "{% url 'api-part-test-template-list' %}",
method: 'get',
name: 'testresult',
formatNoMatches: function() {
return "{% trans 'No test results found' %}";
},
@ -84,6 +85,7 @@ function loadStockTestResultsTable(table, options) {
field: 'pk',
title: 'ID',
visible: false,
switchable: false,
},
{
field: 'test_name',
@ -264,6 +266,7 @@ function loadStockTable(table, options) {
queryParams: filters,
customSort: customGroupSorter,
groupBy: true,
name: 'stock',
original: original,
showColumns: true,
groupByField: options.groupByField || 'part',
@ -405,6 +408,7 @@ function loadStockTable(table, options) {
checkbox: true,
title: '{% trans "Select" %}',
searchable: false,
switchable: false,
},
{
field: 'pk',