Skip to content

Commit 1911465

Browse files
add simple data page selector (#60)
and comment out data load debug logging for now
1 parent 97dcc0d commit 1911465

File tree

3 files changed

+41
-16
lines changed

3 files changed

+41
-16
lines changed

src/views/tableView.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ export class TableView {
330330
public async addData(dataPage: number): Promise<void> {
331331
let nextRows: number = dataPage * this._pageDataSize;
332332
if (this._loadedDataPage <= dataPage && nextRows < this._totalRows) {
333-
console.log(`tabular.data.view:addData(): loading rows ${nextRows.toLocaleString()}+ ...`);
333+
// console.log(`tabular.data.view:addData(): loading rows ${nextRows.toLocaleString()}+ ...`);
334334
if (this.visible) {
335335
statusBar.showMessage(`Loading rows ${nextRows.toLocaleString()}+`);
336336
}
@@ -544,6 +544,10 @@ export class TableView {
544544
appearance="icon" aria-label="Scroll to First Row">
545545
<span class="codicon codicon-arrow-up">⤒</span>
546546
</vscode-button>
547+
<select id="table-page-selector" title="View Data Page">
548+
<option value="">Page</option>
549+
<option value="1">1</option>
550+
</select>
547551
<select id="save-file-type-selector" title="Save Data">
548552
<option value="">📥&nbsp;Save</option>
549553
<option value="csv">,,, csv</option>

web/scripts/tableView.js

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ let fileName = '';
99
let saveDataFileName = '';
1010

1111
// table view elements
12-
let tableContainer, table, progressRing, saveFileTypeSelector;
12+
let tableContainer, table, progressRing, saveFileTypeSelector, tablePageSelector;
1313

1414
// table view vars
1515
let tableSchema;
@@ -29,7 +29,7 @@ const movableColumns = true;
2929
const movableRows = true;
3030
const selectableRows = true;
3131

32-
const pagination = true;
32+
const pagination = false;
3333
const paginationSize = 1000;
3434
const pageDataSize = 100000;
3535
const pageSizes = [100, 1000, 10000, 100000];
@@ -123,10 +123,6 @@ function initializeView() {
123123
// data progress loading indicator
124124
progressRing = document.getElementById('progress-ring');
125125

126-
// save file selector
127-
saveFileTypeSelector = document.getElementById('save-file-type-selector');
128-
saveFileTypeSelector.onchange = saveData;
129-
130126
// reload data UI
131127
const reloadButton = document.getElementById('reload-button');
132128
reloadButton.addEventListener('click', reloadData);
@@ -138,6 +134,14 @@ function initializeView() {
138134
const scrollToLastRowButton = document.getElementById('scroll-to-last-row-button');
139135
scrollToLastRowButton.addEventListener('click', scrollToLastRow);
140136

137+
// table page selector
138+
tablePageSelector = document.getElementById('table-page-selector');
139+
tablePageSelector.onchange = showDataPage;
140+
141+
// save file selector
142+
saveFileTypeSelector = document.getElementById('save-file-type-selector');
143+
saveFileTypeSelector.onchange = saveData;
144+
141145
// request initial rows data load
142146
vscode.postMessage({ command: 'refresh' });
143147
}
@@ -297,22 +301,36 @@ function addData(table, dataRows, dataPageIndex) {
297301
// increment last loaded data page index
298302
loadedDataPage++;
299303

304+
// update data page selector
305+
tablePageSelector.innerHTML += `<option value="${loadedDataPage}">${loadedDataPage + 1}</option>`;
306+
300307
// add new rows to table data
301-
console.log('tableView.addData(): loading data page:', loadedDataPage);
302308
tableData.push(...dataRows);
303-
loadedRows += dataRows.length;
304-
console.log('tableView.loadedRows:', loadedRows.toLocaleString(), 'totalRows:', totalRows.toLocaleString());
305-
306-
if (table.getDataCount() <= 0) {
307-
// display the first data page on reload
308-
table.setData(tableData);
309+
if (loadedRows <= 0) {
310+
// reset table data on on reload
311+
table.setData(dataRows);
309312
}
313+
loadedRows += dataRows.length;
314+
// console.log('tableView.addData(): loading data page:', loadedDataPage);
315+
// console.log('tableView.loadedRows:', loadedRows.toLocaleString(), 'totalRows:', totalRows.toLocaleString());
310316
}
311317

312318
// request more data rows to load and display
313319
getNextDataPage();
314320
}
315321

322+
/**
323+
* Loads requested data page in table view.
324+
*/
325+
function showDataPage() {
326+
let dataPageIndex = Number(tablePageSelector.value);
327+
// console.log('tableView.showDataPage(): loading data page:', dataPageIndex);
328+
const pageStart = (dataPageIndex * pageDataSize);
329+
const pageData = tableData.slice(pageStart, Math.min(pageStart + pageDataSize, totalRows));
330+
table.clearData();
331+
table.setData(pageData);
332+
}
333+
316334
/**
317335
* Clears displayed table data.
318336
*/
@@ -325,7 +343,10 @@ function clearTable(table) {
325343
loadedRows = 0;
326344
totalRows = 0;
327345
loadedDataPage = 0;
328-
tableData.length = 0;
346+
tableData = [];
347+
348+
// clear UI controls
349+
tablePageSelector.innerHTML = '<option value="">Page</option><option value="1">1</option>';
329350
}
330351
}
331352

web/styles/table-view.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ body {
3131
position: absolute;
3232
top: 5px;
3333
right: 0px;
34-
width: 180px;
34+
width: 240px;
3535
height: 32px;
3636
padding-left: 5px;
3737
background-color: var(--vscode-editor-background);

0 commit comments

Comments
 (0)