This repo contains the powerful engine that performs all the features and actions expected of a functional spreadsheet.
The application is logically separated into two parts.
- The client contains the web browser application. Actions performed by the user become REST API calls to the server.
- The server contains all the supporting REST APIs using JSON for request and response payloads that eventually interact with engine.
Global settings (SpreadsheetMetadata)
Each and every spreadsheet is represented by a single SpreadsheetMetadata
object instance.
A wide variety of items are stored for each spreadsheet including but not limited to:
-
Each item is allocated a unique SpreadsheetMetadataPropertyName.
-
Changes to any of these properties will force a recalculation and formatting of every cell in the spreadsheet.
-
Spreadsheet identifier/name
- SpreadsheetId The unique identifier for each spreadsheet.
- SpreadsheetName A descriptive name of the spreadsheet.
-
Audit metadata such as the creator/last modified users and timestamps.
-
Locale
- locale
- It is possible to replace the initial
Locale
symbols used when formatting numbers and dates.- Date
- Numbers
-
Date
- DateTime offset Used to select the date for the numeric value of 0. This is used to select whether 1901 or 1904 is the starting epoch for date values.
- Default Year
- Two Digit Year
-
Numbers
- NumberKind
- Mathematical computations in two flavours are supported
- 64 bit fast with limited precision (12 decimal places) just like Excel and Google Sheets
- Variable, slower supporting any number of digits of precision, more is slower.
- Mathematical computations in two flavours are supported
- NumberKind
-
Formatting Some default format pattern(s) for each of the spreadsheet value types. Note cells can have their own format pattern assigned which will be used instead.
- Date
- DateTime
- Number
- Text
- Time
- Custom formatters
- TODO Adding support for authoring (and uploading) or selecting from the store custom formatters.
- General digit count
Controls the number of digits that can appear when the
General
format pattern is selected.
-
Parsing
-
Viewport These properties control the spreadsheet grid view.
- Frozen columns How many column(s) are frozen if any.
- Frozen rows How many row(s) are frozen if any.
- Hide Zero Value Control whether zero values are hidden or shown.
- Viewport Includes the range of cells displayed and any Cell(s)/Column(s)/Row(s) selection.
TODO