groupBy: a heading row per group
| Team | Qb | Wins | Losses |
|---|---|---|---|
| West | |||
![]() | Patrick Mahomes | 15 | 2 |
![]() | Justin Herbert | 11 | 6 |
![]() | Bo Nix | 10 | 7 |
![]() | Gardner Minshew | 4 | 13 |
| East | |||
![]() | Josh Allen | 13 | 4 |
![]() | Tua Tagovailoa | 8 | 9 |
![]() | Aaron Rodgers | 5 | 12 |
![]() | Drake Maye | 4 | 13 |
import { STANDINGS, type Standing } from "@sportsdataverse/examples/data";
import { defineTable } from "@sportsdataverse/sdvtables";
import { renderHTMLAsync } from "@sportsdataverse/sdvtables/html";
// Rows are grouped in the order they arrive: sort them first if the groups are interleaved.
const spec = defineTable<Standing>()
.columns((c) => [c.logo("team", { league: "nfl" }), c.text("qb"), c.int("wins"), c.int("losses")])
.groupBy("division")
.title("AFC, 2024")
.build();
await renderHTMLAsync(spec, STANDINGS);
Tags: decoration · groupBy. All sdvtables examples.







