Change default table view to be displayed only after data fetch
[arvados-workbench2.git] / src / store / data-explorer / data-explorer-reducer.ts
index 175cd0b2817fd0ea419f8474f1326bb16bd2dc20..d059d37af4639110170f848cf1badf4be411154a 100644 (file)
@@ -15,6 +15,7 @@ export interface DataExplorer {
     rowsPerPage: number;
     rowsPerPageOptions: number[];
     searchValue: string;
+    working?: boolean;
 }
 
 export const initialDataExplorer: DataExplorer = {
@@ -67,9 +68,23 @@ export const getDataExplorer = (state: DataExplorerState, id: string) =>
 const update = (state: DataExplorerState, id: string, updateFn: (dataExplorer: DataExplorer) => DataExplorer) =>
     ({ ...state, [id]: updateFn(getDataExplorer(state, id)) });
 
+const canUpdateColumns = (prevColumns: DataColumns<any>, nextColumns: DataColumns<any>) => {
+    if (prevColumns.length !== nextColumns.length) {
+        return true;
+    }
+    for (let i = 0; i < nextColumns.length; i++) {
+        const pc = prevColumns[i];
+        const nc = nextColumns[i];
+        if (pc.key !== nc.key || pc.name !== nc.name) {
+            return true;
+        }
+    }
+    return false;
+};
+
 const setColumns = (columns: DataColumns<any>) =>
     (dataExplorer: DataExplorer) =>
-        ({ ...dataExplorer, columns });
+        ({ ...dataExplorer, columns: canUpdateColumns(dataExplorer.columns, columns) ? columns : dataExplorer.columns });
 
 const mapColumns = (mapFn: (column: DataColumn<any>) => DataColumn<any>) =>
     (dataExplorer: DataExplorer) =>