From e4b5bd4c01dd45961a7b45cd42046abfeada08c0 Mon Sep 17 00:00:00 2001
From: Eugen Neuber <eugen.neuber@tugraz.at>
Date: Wed, 21 Aug 2019 14:22:29 +0200
Subject: [PATCH] Update table columns only on first page load

---
 .../data-table-view/src/data-table-view.js    | 24 +++++++++++--------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/packages/data-table-view/src/data-table-view.js b/packages/data-table-view/src/data-table-view.js
index 7fb40cdb..6b56da42 100644
--- a/packages/data-table-view/src/data-table-view.js
+++ b/packages/data-table-view/src/data-table-view.js
@@ -159,16 +159,19 @@ class DataTableView extends LitElement {
         }
     }
 
-    update_datatable(columns, rows) {
-        //console.log('rows = ' + rows);
+    update_datatable(columns, rows, is_first_page) {
         const that = this;
         if (this.table) {
-            columns.forEach(function (item, index) {
-                let i = that.display_columns.indexOf(item.title);
-                // console.log('item = {' + item.title + ', ' + item.visible + '} i = ' + i);
-                that.table.columns([i]).visible(item.visible == true);
-                // TODO that.table.columns([index]).title = item.title;
-            });
+            // set column visibility/titles on first page load only
+            if (is_first_page) {
+                columns.forEach(function (item) { //, index) {
+                    let i = that.display_columns.indexOf(item.title);
+                    that.table.columns([i]).visible(item.visible === true);
+                    // if column order has changed, update column title also
+                    let t = that.table.columns([i]).header();
+                    $(t).html(item.title);
+                });
+            }
             rows.forEach(row => this.table.row.add(row));
             // now ready to draw
             this.table.draw();
@@ -208,14 +211,15 @@ class DataTableView extends LitElement {
                     }
                 }
 
-                that.update_datatable(columns, rows);
+                that.update_datatable(columns, rows, page === 1);
 
                 if (!that.wait_until_all_loaded)
                     that.is_loading = false;
 
-                return items.length;
+                return rows.length;
             });
     }
+
     async call_loader(page) {
         return await this.loader(page);
     }
-- 
GitLab