Skip to content

Building a web based spreadsheet application server & rich web app

License

Notifications You must be signed in to change notification settings

mP1/walkingkooka-spreadsheet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status Coverage Status License Language grade: Java Total alerts J2CL compatible

Application

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:

Internal components

There are many internal components that contribute to the core functionality of a spreadsheet. Eventually each of these will be a plugin where users can contribute an alternative or supplementary choice.

These Converters along with a few others belonging to other repos are used to convert values from one type to another.

  • errorThrowing

  • errorToNumber

  • errorToString

  • general

  • parser

  • selectionToSelection

  • spreadsheetCellTo

  • stringToDate

  • stringToDateTime

  • stringToExpressionNumber

  • stringToFormatPattern

  • stringToSelection

  • unformattedNumber

  • walkingkooka-convert

  • walkingkooka-tree

Converter(s) are part of many core features, some are listed below and the more will be created.

  • Within a formula expression converting a date to a number within an addition and other places containing math with non number values.

All sorting is performed by using a selected SpreadsheetComparator, which is identical to a java.util.Comparator but also includes a type property of java.lang.Class. The type property is used to convert each value prior to the actual comparison.

This supports advanced features such as sorting a range of cells with

  • Date
  • DateTime
  • Day of Month
  • Day of Week
  • Hour of AMPM
  • Hour of Day
  • Month of Year
  • Nano of Second
  • Number
  • Second of Minute
  • Text
  • Text case-insensitive
  • Time
  • Year

It is thus possible to sort a column(s) in the following possible ways

  • day-of-month then month-of-year then year
  • seconds-of-minute then minute-of-day then hour-of-day

When sorting a cell-range/column/rows it is possible to sort each column/row with different SpreadsheetComparator(s).

Functions within a formula expressions are defined by individual ExpressionFunction.

Currently there are about 100+ functions available and these are listed HERE.

A SpreadsheetFormatter is used to format the cell value into text that is displayed within the grid of cells.

There are several built-in SpreadsheetFormatter(s) one for each Spreadsheet type, each supporting the standard patterns to allow user customisation of that value type along with a single color.

Other internal components

TODO Mention here TODO Dynamic plugin support

About

Building a web based spreadsheet application server & rich web app

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages