opengridv0.15.0

Introduction

What opengrid is, what is in the repository today, and what V1 deliberately leaves out.

opengrid is a portable Rust data and query engine with client/server execution, and on top of it an accessible data grid, table and pivot delivered as Web Components.

The product is the engine, not a JavaScript grid. The same query model, the same semantics and the same results run in WebAssembly in a browser, natively on a server, and against PostgreSQL. A conformance suite of JSON cases pins what “the same” means. What sets it apart compares that with a grid written in JavaScript.

Status

Pre-1.0. On npm are @casoon/opengrid, with the elements and the engine, and the adapters for React, Vue and Svelte — see Installation. The portable Rust crates and opengrid-server are on crates.io. What each release changed is in CHANGELOG.md.

The public API is written down in The public API, and a test fails when it changes. That freezes the list, not the design: it may still change before 1.0.

The three elements

Element Use it when
<opengrid-table> The answer is read: a plain native <table>, ordinary copy and paste, browser find.
<opengrid-grid> The answer is worked with: selection, editing, filtering, sorting, column control, virtualization or paging.
<opengrid-pivot> Rows crossed with up to two column dimensions, with subtotals.

All three ship in one module. The Cargo features grid and pivot exist for anyone who wants only one; set_columns and set_formats are in both, so a pivot-only build pulls the grid and query crates too (it grows from 122.9 to 125.0 KiB brotli). In React, Vue and Svelte they come as components — see Frameworks.

What V1 deliberately does not do

  • No calculated fields. A column is stored or derived from a date part (year, month); there is no expression language.
  • A pivot is bounded: two column dimensions, 256 generated columns, 10 000 rows, and 131 072 cells (rows × columns — what a browser draws as a table in about a second). Over a limit you get an error with a sentence, never a silently truncated result.
  • Paging and virtualization are exclusive, not combined.
  • No CDN build. Adapters exist for React, Vue and Svelte; Angular, Lit and the rest use connect directly.

Edit this page on GitHub · Docs for v0.15.0