The diagram below shows the top level modules within Revgrid:
The colors indicate the type of module:
blue: Client
green: Servers
pink: Libraries that assist with server development
purple: Example grids that combine client and server
yellow: Code common to other modules
The arrangment of modules gives an indication of dependency. Modules are dependent on those below and the vertical ones on their right. Dotted lines also show dependencies.
Brief description
Client
Draws the grid on the canvas using data supplied from server and handles UI.
Column Layout
Server that maps fields to columns allowing data to ignore column layout. Also supports serialisation of column layout.
Data Row Array
Server that provides rows of data from a an array of JSON objects. Each object contains the data for one row and all objects need to have the same keys/properties. Only supports full grid data updates.
Record
Server that maps records to rows allowing data to ignore sorting and filtering of rows. Also supports highlighting recently changes cells and rows.
Sourced Field
Server supports joining fields from multiple sources into records/rows. It also contains a Table server which provides infrastructure for generating tables of realtime data for the client based on table definitions.
Header
Server that provides headings to a grid's header subgrid. Includes 2 servers: one for single row header and the other for multi row header.
Settings Implementation
Provides several implementations for settings used in client. Includes: default, in-memory and readonly implementations.
Standard
Provides some standard libraries for: painters, cell painters and cell editors which can be used in servers. Also includes some specialised classes for managing custom headings and caching table field source definitions.