demo D186
Shadow columns: rate and streak in React
Speed of change, direction runs, and a sparkline of recent history
shadow: { of, kind: 'rate' }
This grid adds shadow columns for speed of change, runs in one direction, and a sparkline of recent history. It shows not just where a value is but how fast and which way it is moving, per row.
This is the React version. The grid mounts through the createLatticeGrid adapter, which takes its configuration as ordinary props and hands back the live grid through a ref. The grid below is the same one every other tab runs.
The configuration
<link rel="stylesheet" href="https://cdn.latticegrid.dev/lattice-grid@1.108.0/lattice-grid.min.css">
<div id="grid"></div>
<script type="module">
import React from 'https://esm.sh/react@18';
import { createRoot } from 'https://esm.sh/react-dom@18/client';
import { createGrid } from 'https://cdn.latticegrid.dev/lattice-grid@1.108.0/lattice-grid.esm.min.js';
import createLatticeGrid from 'https://cdn.latticegrid.dev/lattice-grid@1.108.0/modules/react.esm.min.js';
const LatticeGrid = createLatticeGrid({ React, createGrid });
const columns = [
{ field: 'symbol', title: 'Symbol', layout: { pin: 'start', width: 120 } },
{ field: 'price', title: 'Price', type: 'number' },
{ id: 'rate', title: 'Per second', shadow: { of: 'price', kind: 'rate' }, type: 'number', format: { signed: true } },
{ id: 'since', title: 'Since move', shadow: { of: 'price', kind: 'sinceUpdate' }, type: 'duration' },
{ id: 'hist', title: 'Recent', shadow: { of: 'price', kind: 'history' }, cell: { render: 'line' } },
];
const rows = [/* a live price book */];
function App() {
return (
<LatticeGrid
rowKey="id"
highlightOnChange={{ duration: 500 }}
columns={columns}
rows={rows}
style={{ height: '460px' }}
/>
);
}
createRoot(document.getElementById('grid')).render(<App />);
</script>