The TableEditorView now has a "view" mode, which is used to show data objects from the dataset landing page, see these PRs. With those changes, we made rendering in the TableEditorView more efficient, but there are still opportunities to improve the performance, especially when dealing with large datasets.
There are limits set on the size of data that can be loaded into the table to prevent the browser from freezing or crashing. Enabling lazy loading and other optimizations would allow users to view & browser large tables directly in the browser.
Here are a few ideas to improve the performance:
[ ] Lazy load dropdowns - In edit mode, there are dropdown menus on each row & col header that are pre-rendered. Instead, render dropdowns only when they are clicked.
[ ] Lazy load the table rows - The entire table is rendered at once. Instead, render only the visible rows and load more as the user scrolls or pages through the data, especially for large datasets.
[ ] Leverage logic from PapaParse (our csv parser) to handle large tables, such as:
chunk - Process multiple csv rows at a time so we can progressively render the table without freezing the browser. See if we can clear unused data after each chunk is processed?
worker - Run the parsing in a background thread, keeping the UI responsive while the CSV is being parsed.
preview - Parse the first n rows of the CSV file. We should set this to the maximum threshold of rows that we can handle in the browser.
Other improvements:
These would make it easier for users to browser large tables
[ ] Add a search bar - Add a search bar to filter the data based on the user's input.
[ ] Add a filter - Allow filtering data based on the values in the columns.
The TableEditorView now has a "view" mode, which is used to show data objects from the dataset landing page, see these PRs. With those changes, we made rendering in the TableEditorView more efficient, but there are still opportunities to improve the performance, especially when dealing with large datasets.
There are limits set on the size of data that can be loaded into the table to prevent the browser from freezing or crashing. Enabling lazy loading and other optimizations would allow users to view & browser large tables directly in the browser.
Here are a few ideas to improve the performance:
chunk
- Process multiple csv rows at a time so we can progressively render the table without freezing the browser. See if we can clear unused data after each chunk is processed?worker
- Run the parsing in a background thread, keeping the UI responsive while the CSV is being parsed.preview
- Parse the firstn
rows of the CSV file. We should set this to the maximum threshold of rows that we can handle in the browser.Other improvements:
These would make it easier for users to browser large tables