mP1 / walkingkooka-spreadsheet

Building a web based spreadsheet application server & rich web app
Apache License 2.0
5 stars 2 forks source link
apache-license-2 j2cl java

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.

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.

SpreadsheetConverters

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

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

SpreadsheetComparators

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

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

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

ExpressionFunction

Functions within a formula expressions are defined by individual ExpressionFunction.

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

SpreadsheetFormatter

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.

- dd/mm/yyyy date

Other internal components

TODO Mention here TODO Dynamic plugin support