All posts
Published at Sun Mar 17 2024 in
Rows HQ

2024 W12 - Point and Compose!

blog - magnifier magnifying glass loupe

Every week I post about one thing that happened at Rows. We're building in public!


Last week we shipped one of the most requested features at Rows: the ability to point to tables in other pages when you are editing a formula.

Blog - P&C multipageUsing the upgraded Cell Editor to grab values from a new page.

In other spreadsheets, this context is pretty basic and boils down to 3 mechanics.

  1. You load a document, and there's always an open "sheet". You may also have multiple charts, which float above the infinite (read, ugly) grid of the open table.

  2. When you want to edit a cell, you type "=" (or "+") and that gets you into formula editing mode. Inside formula editing, you may use your keyboard to type values, functions or cell/range addresses.

  3. If you just started your formula or entered a function parameter, then the formula lets you continue typing or use the mouse (or keyboard arrows) to pick cells visually. You can choose any cell or range in the current sheet or any other sheet available in the doc.

(Technically, though, it's actually not that simple. It never is!)

For Rows this is a bit different. We support a flexible Page layout with many tables. For that, we created early on an architecture that loads multiple (but not all) tables at once. And so that led to some choices in the past that made this somewhat difficult!

  1. Our Cell Editor component was rendered by the table itself.

  2. This means that the active table and the cell editor are indissociable; The active table was the element that stored information about the mode of the Cell Editor (Pointing, Composing, expecting variable etc).

  3. That in turn means that when the table rendering gets destroyed because you navigated out of the page, then the Cell Editor component got killed too.

  4. It was also the origin table that determined the position of the editor relative to the whole canvas (the screen). The keyboard actions were also bound to the navigation relative to that active table.

  5. The origin table cells were also always kept in memory which is expensive (ie, makes your computer slow).

So we had to make a bunch of changes to upgrade the whole web app structure to this new reality. And now it's here.

Point at will!

Blog - point at will


See you next week!