From cb0f0e34d9cf9bbea2aa9c51a52deade24f0c56f Mon Sep 17 00:00:00 2001
From: Oliver <oliver.henry.walters@gmail.com>
Date: Thu, 1 Jun 2023 16:09:13 +1000
Subject: [PATCH] Improvements for parameteric part table (#4940)

- Initially only display columns which have data
---
 InvenTree/templates/js/translated/part.js | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/InvenTree/templates/js/translated/part.js b/InvenTree/templates/js/translated/part.js
index 92ed5ce5e1..82de36520e 100644
--- a/InvenTree/templates/js/translated/part.js
+++ b/InvenTree/templates/js/translated/part.js
@@ -2025,6 +2025,7 @@ function loadParametricPartTable(table, options={}) {
                         switchable: true,
                         sortable: true,
                         filterControl: 'input',
+                        visible: false,
                     });
                 }
             }
@@ -2053,6 +2054,9 @@ function loadParametricPartTable(table, options={}) {
         uniqueId: 'pk',
         onLoadSuccess: function(response) {
 
+            // Display columns as we receive data from them
+            let activated_columns = [];
+
             // Data may be returned paginated, in which case we preference response.results
             var data = response.results || response;
 
@@ -2061,7 +2065,14 @@ function loadParametricPartTable(table, options={}) {
 
                 // Make each parameter accessible, based on the "template" columns
                 row.parameters.forEach(function(parameter) {
-                    row[`parameter_${parameter.template}`] = parameter.data;
+                    let col_name = `parameter_${parameter.template}`;
+                    row[col_name] = parameter.data;
+
+                    // Display the column if it is not already displayed
+                    if (!activated_columns.includes(col_name)) {
+                        activated_columns.push(col_name);
+                        $(table).bootstrapTable('showColumn', col_name);
+                    }
                 });
 
                 data[idx] = row;