https://jssocial.pw/app/3dspread
You can use the "temporary user" option to play around with it.
A couple things to know about it. Obviously it's not anywhere near done.
Next, while the sheet is 3d, the view is just the z=0 plane.
To address other cells use a formula like =c0:0:0+43
It supports javascript objects of all kinds. If your input can be parsed as JSON, it will be treated that way. That way you get automatic interpretation of numbers as numbers. To keep a number as a string add ' to the front of it. That forces string interpretation.
You can even use sets. In one cell you can add =new Set([1,2])
, and in the next cell you can do =c0:0:0.has(1)
.
Goals. The hope is that the view and the model will be separate so you should be able to view any plane, setting any dimension as the vertical and the horizontal. That means viewing it transposed doesn't require any operations on the data.
Obviously work has to be done on standard spreadsheet UX. The formulas already support dollar signs in the cell addresses, but I do need to figure out copy and paste so that you can copy values and ranges of values out of it, and copy formulas from one cell to another with the formula adjusting.
Also, I consider it a strength, but it supports circular references. It simply limits itself to one recalculation per cell per edit.
I'm debating getting rid of the 'c' predicate to cell addresses. One reason why it's needed is the ambiguous way to interpret omitted indexes. If you omit x does that mean assume zero or use the range where x = any value. I sort of want it to be zero because with it being 3d, I want people to be able to ignore that 3d dimension when they don't need it and assume we are using z=0. So using r as a predicate could make it obvious the input is a range.
Obviously I need to get the data to save. Jsos/jssocial (what it's running on) makes that so simple it wasn't worth testing.
Also here is the source code: https://jssocial.pw/u/3dspread
Edit: There is an updated version, 3dspread2
[–]x0x7[S] 1 insightful - 1 fun1 insightful - 0 fun2 insightful - 0 fun2 insightful - 1 fun - (0 children)