From 1033e1165b5f87273c569a2c7d727e1e7eb6c789 Mon Sep 17 00:00:00 2001
From: pkupczyk <piotr.kupczyk@id.ethz.ch>
Date: Fri, 1 Oct 2021 16:23:23 +0200
Subject: [PATCH] SSDM-11664 : NG UI & ELN : common table widget - fix
 temporary flickering when changing the order of columns

---
 .../components/common/grid/GridController.js   | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/openbis_ng_ui/src/js/components/common/grid/GridController.js b/openbis_ng_ui/src/js/components/common/grid/GridController.js
index 6923f5982c9..69927e4df50 100644
--- a/openbis_ng_ui/src/js/components/common/grid/GridController.js
+++ b/openbis_ng_ui/src/js/components/common/grid/GridController.js
@@ -86,19 +86,23 @@ export default class GridController {
       newColumn.visible = newColumnsVisibility[newColumn.name]
     })
 
-    newColumns = newColumns.sort((c1, c2) => {
+    this._sortColumns(newColumns, newColumnsSorting)
+
+    return { newColumns, newColumnsVisibility, newColumnsSorting }
+  }
+
+  _sortColumns(columns, columnsSorting) {
+    columns.sort((c1, c2) => {
       const c1Index = _.findIndex(
-        newColumnsSorting,
+        columnsSorting,
         columnName => columnName === c1.name
       )
       const c2Index = _.findIndex(
-        newColumnsSorting,
+        columnsSorting,
         columnName => columnName === c2.name
       )
       return c1Index - c2Index
     })
-
-    return { newColumns, newColumnsVisibility, newColumnsSorting }
   }
 
   _initColumn(column) {
@@ -462,7 +466,11 @@ export default class GridController {
       newColumnsSorting.splice(sourceSorting, 1)
       newColumnsSorting.splice(destinationSorting, 0, sourceColumn.name)
 
+      const newColumns = [...state.columns]
+      this._sortColumns(newColumns, newColumnsSorting)
+
       return {
+        columns: newColumns,
         columnsSorting: newColumnsSorting
       }
     })
-- 
GitLab