Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Validation(), specifically setDataAtCell(), can be made much more efficient by eliminating re-render on each column. #408

Closed
ddooley opened this issue Sep 8, 2023 · 2 comments

Comments

@ddooley
Copy link
Collaborator

ddooley commented Sep 8, 2023

DataHarmonizer freezes up / times out on validation of long, wide rows of data. In fact for the GRDI template, validating even 50 rows even if they are almost empty, times out, and from Chrome performance report below, it appears that its because of unnecessary rendering in the setDataAtCell() call.

image

We might be able to dramatically increase performance by switching a cell value update call in the /lib/DataHarmonizer.js script validate() -> getInvalidCells() function which currently is called on each data table column (and GRDI template has 200+ columns). According to HandsOntable docs “Performance issue with instance.setDataAtCell()” , if we can switch from setDataAtCell() to updateData() (rather than loadData which seems to mess with cell/row states) - that looks promising to solve the performance issue. Note that the populateFromArray() method appears to RENDER just like setDataAtCell() so avoid that solution.

Involves replacing "this.hot.setDataAtCell(row, col, update, 'thisChange');" at 2338 and 2346 and the doUniqueValidation() call line 2145 "this.hot.setDataAtCell(provenanceChanges);"

@ddooley
Copy link
Collaborator Author

ddooley commented Sep 10, 2023

Related pull request: #409

@ddooley
Copy link
Collaborator Author

ddooley commented Sep 12, 2023

New pull request solves this. Any testing errors can be reported there

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant