Glide Grid is an amazing achievement I have to say!
You can have a fast DOM without canvas, but it requires creative thinking. DataGridXL also renders millions of cells, but it does not use canvas as its main renderer (https://www.datagridxl.com/demos/one-million-cells).
The way it works: only columns are their own DOM nodes. For browsers it's just too much to ask to re-render let's say (20rows*10cols) 200 DOM nodes while keeping scrolling at 60fps.
> it's just too much to ask to re-render let's say (20rows*10cols) 200 DOM
I don't think this is true with modern browsers and CSS. For a table, every cell and parents of the cells as much as possible, should be styled `contain: strict` and if possible, absolutely positioned.
It's still true. You might be able to get decent performance on a Macbook 3000 (doubtful even) but anything less than that, nope. That's why many grid components use canvas rendering. It would have been a lot easier for all these grid devs to work with DOM nodes if they could.
Out of curiosity: What browsers did you test? Firefox performs magnitudes better in css benchmarks than Chrome, and I thought it is also better in handling large DOMs in general.
DataGridXL is used by 10 million end users. It's tested on all kinds of devices and browser combinations.
Browsers can handle AND update really large DOMs, but they still choke on doing all of these actions (repaint, reflow) WHILE SCROLLING, which is a different game.
This is a big achievement, congrats! A lot of time must have been put into this I am sure. And you are also making a spreadsheet product AND a PDF (preview?) product? How do you combine it?
With this and node-canvas, you have everything you need to generate PDFs. I'll add an example to the examples/ directory for that. The spreadsheet library and PDFs I talked about in OP were examples of how we use this in our application, but are closed-source.
Congrats on releasing the product! What are you using instead of the native scroll event of a browser element? Are you listener to `onwheel` events? Have you find a way to keep scrolling momentun scroll-browser/cross-device or do you normalize the delta to +1/-1?
I am the creator of DataGridXL (https://datagridxl.com), an Excel-like data grid component and it uses native scrolling. However, the document/sheet height/width is indeed limited by max div dimensions. Does your spreadsheet have a max?
I spent a lot of time minimizing bugs and I choose deliberately to have less features and focus ond speed aan reliability.
But website visitors only see that a competing product has 2x the features (at great cost).
I have a customer with 10 million end users, in one year they have reported only 2 bugs, both bugs fixed within a day.
It's also hard to sell another 12 months of support this way, as it "just works". Bugs and imperfection can actually be a way for users to "bond" with your product.
Another downside is that the product does not have a weekly update cycle, as there is not much to fix.
People on github might think the project is dead. In reality, i spent a long time working on the product foundation, but that has no face value.
I got to the end of your post and realized I’d love to hear more about your thoughts around this. Also you must be proud of building something with so little bugs! Thats quite a feat.
Open your page, and try doing these actions without touching your mouse. Some are just awkward, requiring a lot of Tab key. Some I have not figured out at all:
I appreciate your feedback. However, I must admit that I still a bit in the dark about what is awkward about it.
The component is used by a million+ end users and copies traditional Excel/Google Sheets controls.
Are you familiar with those programs?
DataGridXL is an Excel-like component for editing cell values, rather than a table component for selecting rows.
I am curious though if the component is somehow not working like Excel for you... will you perhaps take the time to do a screen recording? I am curious to know what you find awkward, as I especially take pride in the usability of the component. (robbert@datagridxl.com)
Like you said, there exists many chart libs out there already... Hope you find a way to sell and keep working on your product!