Lattice Grid Buy a licence

demo D199

Statistics of a selection

Drag a rectangle; it is summarised as one set of figures

grid.selection.statistics()

Building…
Loading a live grid…

The configuration

<script>
  import { createGrid } from 'https://cdn.jsdelivr.net/npm/@toclocoinc/lattice-grid@1.27.0/lattice-grid.esm.min.js';
  import createLatticeAction from 'https://cdn.jsdelivr.net/npm/@toclocoinc/lattice-grid@1.27.0/modules/svelte.esm.min.js';

  const lattice = createLatticeAction({ createGrid });

  let out = 'Select a block of numeric cells';

  const config = {
    rowKey: 'id',
    selection: { mode: 'multiple', ranges: true },
    columns: [
      { field: 'symbol', title: 'Symbol', layout: { pin: 'start', width: 120 } },
      { field: 'desk', title: 'Desk', filter: { type: 'set' } },
      { field: 'price', title: 'Price', type: 'number' },
      { field: 'bid', title: 'Bid', type: 'number' },
      { field: 'volume', title: 'Volume', type: 'number' },
      { field: 'notional', title: 'Notional', type: 'number',
        format: { style: 'currency', currency: 'USD' }, total: 'sum' },
    ],
    rows,
    // onGrid hands over the live grid the moment it is created. Drag out a block
    // of numeric cells and the count, median, quartiles and spread of the
    // selection are read straight back from the grid.
    onGrid: (grid) => {
      grid.on('range:changed', () => {
        const s = grid.selection.statistics();
        out = s
          ? s.cells + ' cells · median ' + s.median + ' · q1 ' + s.q1 + ' · q3 ' + s.q3 + ' · sd ' + s.stddev
          : 'Select a block of numeric cells';
      });
    },
  };
</script>

<svelte:head>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@toclocoinc/lattice-grid@1.27.0/lattice-grid.min.css">
</svelte:head>

<div use:lattice={config} style="height: 440px"></div>
<div style="margin-top: 12px; font-family: monospace">{out}</div>