Skip to content

Commit 28f81c5

Browse files
add view state and table config persistence to tableView.js (#64)
1 parent 20f28f0 commit 28f81c5

File tree

1 file changed

+31
-3
lines changed

1 file changed

+31
-3
lines changed

web/scripts/tableView.js

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,16 @@ let saveDataFileName = '';
1212
let tableContainer, table, progressRing, saveFileTypeSelector, tablePageSelector;
1313

1414
// table view vars
15+
let tableConfig = {};
1516
let tableSchema;
1617
let tableColumns = [];
1718
let tableData = [];
1819
let loadedRows = 0;
1920
let totalRows = 0;
2021
let loadedDataPage = 0;
22+
let viewState = {
23+
tableConfig: tableConfig
24+
};
2125

2226
// table view settings
2327
const toolbarHeight = 40; // table view toolbar height offset
@@ -102,7 +106,8 @@ window.addEventListener('message', event => {
102106
case 'refresh':
103107
documentUrl = event.data.documentUrl;
104108
fileName = event.data.fileName;
105-
vscode.setState({ documentUrl: documentUrl });
109+
viewState.documentUrl = documentUrl;
110+
vscode.setState(viewState);
106111
tableSchema = event.data.tableSchema;
107112
tableData = event.data.tableData;
108113
totalRows = event.data.totalRows;
@@ -145,6 +150,19 @@ function initializeView() {
145150
saveFileTypeSelector = document.getElementById('save-file-type-selector');
146151
saveFileTypeSelector.onchange = saveData;
147152

153+
// restore previous table view state
154+
viewState = vscode.getState();
155+
if (viewState && viewState.tableConfig) {
156+
// get last table view config
157+
tableConfig = viewState.tableConfig;
158+
}
159+
else {
160+
// create new empty table view config
161+
viewState = {};
162+
viewState.tableConfig = tableConfig;
163+
vscode.setState(viewState);
164+
}
165+
148166
// request initial rows data load
149167
vscode.postMessage({ command: 'refresh' });
150168
}
@@ -202,8 +220,8 @@ function createTable(tableSchema, tableData) {
202220
}
203221

204222
// create tabulator table instance for tabular data display
205-
const tableConfig = createTableConfig(tableColumns);
206-
table = new Tabulator('#table-container', tableConfig);
223+
const tableOptions = createTableConfig(tableColumns);
224+
table = new Tabulator('#table-container', tableOptions);
207225

208226
// update table settings after initial data rows load
209227
table.on('tableBuilt', onTableBuilt);
@@ -435,6 +453,16 @@ function saveTableSetting(id, type, data) {
435453

436454
// save table settings in local storage for now
437455
localStorage.setItem(tableSettingKey, JSON.stringify(data));
456+
457+
if (viewState.tableConfig === undefined) {
458+
// add table config to table view state
459+
viewState.tableConfig = tableConfig;
460+
}
461+
462+
// update table config in view state
463+
tableConfig[type] = data;
464+
vscode.setState(viewState);
465+
console.log(`tableView.saveTableSetting():viewState`, viewState);
438466
}
439467

440468
/**

0 commit comments

Comments
 (0)