jspreadsheet / ce

Jspreadsheet is a lightweight vanilla javascript plugin to create amazing web-based interactive tables and spreadsheets compatible with other spreadsheet software.
https://bossanova.uk/jspreadsheet/v4
MIT License
6.76k stars 827 forks source link

improved large data paste performance #1705

Open ykawakamy opened 1 month ago

ykawakamy commented 1 month ago

When pasting large data, call updateTableReference/updateSelectionFromCoords for each additional row or column. updateTableReference/updateSelectionFromCoords updates the DOM and recalculate the layout, which will result in a performance loss.

PR can reduce the number of calls to updateTableReference/updateSelectionFromCoords by extending the paste area in advance.

Tests are added at commit 20d61c9. Compare with commit ff63058.

NOTE: can be done in previous versions by using parseCSV and insertRow/Column in onbeforepaste.

-- Sry, i'm not good at english.