Direct result in
Pass the engine query result into the adapter. No wide table or gallery DTO step.
result -> published adapter -> native input
chart adapter gallery
The engine returns typed time-series results. The adapters turn that into the thing each chart library actually wants: props, rows, configs, datasets, aligned arrays, or traces. Switch libraries below; every gallery entry renders through the actual chart package it represents.
// Query once. Render anywhere.
const engine = new ScanEngine();
const result = engine.query(store, query);
const tremor = toTremorLineChartProps(result);
const recharts =
toRechartsTimeSeriesData(result);
// Every gallery chart starts from
// this TSDB engine result.
user docs
Query the TSDB engine once, then pass the result directly to the adapter for the chart library you already use. The adapter returns native package input: Tremor props, Recharts rows and keys, Chart.js configs, ECharts options, Plotly figures, uPlot aligned arrays, Vega-Lite specs, and the equivalent shape for each supported library. Use the Show code button on any card to compare the query, adapter call, returned input, and native render code.
Pass the engine query result into the adapter. No wide table or gallery DTO step.
result -> published adapter -> native input
Feed the returned object to the chart package exactly where that package expects it.
new Chart(canvas, config)
Reuse the chart instance and call the library's normal update path with new adapter output.
chart.update("none")
ergonomics audit
The adapters handle the repetitive conversion work: aligned timestamps, latest values, histogram buckets, labels, sparse values, and package-specific field names. You keep control over presentation, colors, tooltips, axes, and the update strategy each chart library recommends. A chart shape only appears in this gallery when that library has a published adapter and a real native renderer path for it.
Supply a `seriesLabel` callback and let the adapter preserve sparse samples as the null or missing-value shape that library expects.
seriesLabel: (series) => ...
The adapter gives you the data-bearing object. You can still merge in normal chart package options for themes, legends, grids, cursors, and interaction.
{ ...option, grid, tooltip }
For live data, append into the same store, query the sliding window, convert again, then call the chart library's own update API.
result -> adapter -> chart.update()
why it feels good
The public exports are named for the thing the library wants, not for an o11ykit intermediate model. A Tremor user gets props, a Recharts user gets rows and data keys, uPlot gets aligned arrays, ECharts gets options, and Plotly gets a figure.
coverage
A checked cell means this gallery has a published adapter call and a native package render path for that chart shape. The latest-bar and histogram cards use the chart package's own bar, histogram, or category-series inputs; there are no gallery-only drawing layers behind them.