Skip to content

Rink API

The main class for creating hockey rink visualizations.

Constructor

typescript
new Rink(selector: string | HTMLElement)

Parameter: CSS selector or HTMLElement for the container.

Configuration Methods

All configuration methods return this for chaining. Call before render().

MethodSignatureDefaultDescription
widthwidth(value: number)800SVG width in pixels
heightheight(value: number)400SVG height in pixels
paddingpadding(value: number)20Padding around rink
halfRinkhalfRink(value: boolean, end?: "offensive" | "defensive")falseShow half rink
verticalvertical(value: boolean)falseVertical orientation
colorscolors(colors: Partial<RinkColors>)See RinkColorsCustom colors

Core Methods

render()

Renders the rink. Must be called before adding layers.

typescript
render(): this

addEvents()

Adds an EventLayer.

typescript
addEvents<TData>(data: TData[], config?: Partial<EventLayerConfig<TData>>): this

addHexbin()

Adds a HexbinLayer.

typescript
addHexbin<TData>(data: TData[], config?: Partial<HexbinLayerConfig<TData>>): this

addHeatmap()

Adds a HeatmapLayer.

typescript
addHeatmap<TData>(data: TData[], config?: Partial<HeatmapLayerConfig>): this

addLayer()

Adds a custom layer extending BaseLayer.

typescript
addLayer(layer: BaseLayer): this

Throws: Error if render() hasn't been called.

Layer Management

MethodSignatureDescription
removeLayerremoveLayer(id: string): thisRemove layer by ID
showLayershowLayer(id: string): thisShow hidden layer
hideLayerhideLayer(id: string): thisHide layer
updateLayerupdateLayer<T>(id: string, data: T[]): thisUpdate layer data
getLayerManagergetLayerManager(): LayerManager | nullAccess LayerManager

Example

typescript
import { Rink } from "d3-hockey";

new Rink("#container")
  .width(900)
  .height(450)
  .colors({ ice: "#e3f2fd" })
  .render()
  .addEvents(shots, { id: "shots", color: "blue" })
  .addHexbin(allShots, { id: "density", opacity: 0.5 });

See Also