327 karma · joined July 17, 2020
www.rowsncolumns.app
Spreadsheet uses virtualisation to display data, ie only data viewable in a Row x Column viewport is displayed. This improves rendering performance.
Data performance can be improved by 1. Lazy loading data or Infinite scrolling. We have a built-in async hook that does this. 2. Only save pointers to data that is being displayed. So if you have 1M rows, on the JavaScript side, you only load 100 rows in memory and when user scrolls, you can replace this rows with new data. This will make the browser happy. 3. Streaming data from the server similar to google sheets.
But to answer your question, we have a Max row limit of 1_048_576 and max column limit of 16_384
Declaratively render cells, embed external content, use custom formulas, collaborate with other users all using composable ReactJS UI components.
Some kind of a Layout Component that has top/left/right/bottom bounds, and access to sheet data
And congrats on your launch too. Wish you all the best.
1. Fixed
2. Thats because React State of all the cells are updated. One way is to reduce the number of columns. Currently the grid size is 1000 x 1000, which means 1 million objects needs to change.
Need to think of a proper optimization technique.
Keybindings can be added easily. I disabled global key handler for copy/paste/undo/redo for now, but that can be enabled.
Images inside cells are pretty straightforward. I will update the docs.
Please signup for our newsletter and I will keep you updated on formula support
https://rmdort.typeform.com/to/H5TjLoun
I will keep u updated too. Saved your bio :)
1. It can be a used to build Apps that render multiple tables in a Sheet. Or a CryptoCurrency trading app where numbers tick at high frequency.
2. It can be used to edit and download Excel files
3. Quick slice/dice of csv/excel data for DataScience projects
4. Formula can be used to run Custom calculations or to fetch data from a third-party server and display them on a Sheet.
Most corporates do not allow Google Suites in the workplace due to privacy concerns. The only alternative is Microsoft Excel, which are not shareable. (unless u send them as attachment :P)
Do note that this wont scale for larger applications. You would not want to calculate formulas everytime during render.
You could signup for our newsletter and I will keep you updated
Right now, i strip out formatting during paste
https://github.com/rowsncolumns/grid/blob/master/packages/gr...
Hope to get to it soon
Multi-Selection mode is a WIP
1. Commercial pricing is per developer. Otherwise it can be misused
2. No
3. Formula parsing module that I am building is capable of running in a Web Worker or in the same UI thread. For lag-free calculations, Web Worker is preferred.
Basically Calculations are async. The calc engine can also reside in your own server (future :P)
`fast-formula-parser` does support adding custom formulas, So i think you will have control over it.
1. Scroll performance is much better than HTML
2. Drawing on canvas is cheap compared to modifying DOM or attributes
3. Streaming updates are much smoother in canvas as drawing is quick. I had used Canvas as an interface for high-frequency trading
4. Canvas is easy to work with. And with Konva - https://github.com/konvajs/react-konva/, any React developer will find it at home
5. No Browser bugs :)
6. Performance tuning is quicker with Canvas
7. In the future, we can decide to use WebGL (using PixiJS)
Some problems with canvas IMO
1. There is no relative positioning :(. It sounds silly, but coming from HTML, any element can be positioned relative to its parent.
2. Styling/Pixel ratio/Stroke - can be hard to figure out first. And the 0.5px crisp stroke workaround on DPR 1 devices. Took me a long time to figure out
There are pros and cons for both, I guess it all comes down to your personal preference and picking the right tools for the task in hand.
I doubt a lot of people edit excel files on mobile. I maybe wrong.
Still lots of optimisations to be done, but i will never sacrifice anything for a smooth scrolling experience :)
I did not add this options to the Context Menu yet.
If you have highly interactive data in cells, (eg: svg graphs), scroll performance can be improved by enabling `snap`. With this only one row/column will scroll at a time.
:)