Module

Chartjs.Callbacks

Package
purescript-chartjs
Repository
philippedev101/purescript-chartjs

Callback types and overlays for Chart.js event handling.

#Callbacks Source

type Callbacks = { animationOnComplete :: Maybe (EffectFn1 Foreign Unit), animationOnProgress :: Maybe (EffectFn1 Foreign Unit), legendGenerateLabels :: Maybe (EffectFn1 ChartInstance (Array Foreign)), legendLabelsFilter :: Maybe (EffectFn2 LegendItem Foreign Boolean), legendLabelsSort :: Maybe (EffectFn3 LegendItem LegendItem Foreign Int), legendOnClick :: Maybe (EffectFn3 Event LegendItem Legend Unit), legendOnHover :: Maybe (EffectFn3 Event LegendItem Legend Unit), legendOnLeave :: Maybe (EffectFn3 Event LegendItem Legend Unit), onClick :: Maybe (EffectFn3 Event (Array ActiveElement) ChartInstance Unit), onHover :: Maybe (EffectFn3 Event (Array ActiveElement) ChartInstance Unit), onResize :: Maybe (EffectFn2 ChartInstance { height :: Number, width :: Number } Unit), scaleCallbacks :: Maybe (Object ScaleLifecycleCallbacks), tickCallbacks :: Maybe (Object TickCallback), tooltipCallbacks :: Maybe TooltipCallbacks, tooltipExternal :: Maybe (EffectFn1 Foreign Unit), tooltipFilter :: Maybe (EffectFn4 Foreign Int (Array Foreign) Foreign Boolean), tooltipItemSort :: Maybe (EffectFn3 Foreign Foreign Foreign Int) }

Chart.js event callbacks (click, hover, resize, legend, tooltip, ticks).

#TooltipCallbacks Source

type TooltipCallbacks = { afterBody :: Maybe (EffectFn1 (Array TooltipItem) String), afterFooter :: Maybe (EffectFn1 (Array TooltipItem) String), afterLabel :: Maybe (EffectFn1 TooltipItem String), afterTitle :: Maybe (EffectFn1 (Array TooltipItem) String), beforeBody :: Maybe (EffectFn1 (Array TooltipItem) String), beforeFooter :: Maybe (EffectFn1 (Array TooltipItem) String), beforeLabel :: Maybe (EffectFn1 TooltipItem String), beforeTitle :: Maybe (EffectFn1 (Array TooltipItem) String), footer :: Maybe (EffectFn1 (Array TooltipItem) String), label :: Maybe (EffectFn1 TooltipItem String), labelColor :: Maybe (EffectFn1 TooltipItem Foreign), labelPointStyle :: Maybe (EffectFn1 TooltipItem Foreign), labelTextColor :: Maybe (EffectFn1 TooltipItem String), title :: Maybe (EffectFn1 (Array TooltipItem) String) }

Tooltip formatting callbacks. Callbacks receiving a single TooltipItem are called per-dataset. Callbacks receiving an array are called once for the whole tooltip.

#TickCallback Source

type TickCallback = EffectFn3 Foreign Int (Array Foreign) String

Tick formatting callback: (value, index, ticks) -> formatted label

#ScaleCallback Source

type ScaleCallback = EffectFn1 Foreign Unit

Scale lifecycle callback: receives the scale/axis object as Foreign.

#ScaleLifecycleCallbacks Source

type ScaleLifecycleCallbacks = { afterBuildTicks :: Maybe ScaleCallback, afterCalculateLabelRotation :: Maybe ScaleCallback, afterDataLimits :: Maybe ScaleCallback, afterFit :: Maybe ScaleCallback, afterSetDimensions :: Maybe ScaleCallback, afterTickToLabelConversion :: Maybe ScaleCallback, afterUpdate :: Maybe ScaleCallback, beforeBuildTicks :: Maybe ScaleCallback, beforeCalculateLabelRotation :: Maybe ScaleCallback, beforeDataLimits :: Maybe ScaleCallback, beforeFit :: Maybe ScaleCallback, beforeSetDimensions :: Maybe ScaleCallback, beforeTickToLabelConversion :: Maybe ScaleCallback, beforeUpdate :: Maybe ScaleCallback }

Scale lifecycle callbacks for a single scale axis. These are set directly on the scale config (not nested under ticks/grid).

The four high-value callbacks (afterBuildTicks, beforeFit, afterFit, afterDataLimits) shipped with roadmap item #13. The remaining 10 (the before* / after* pairs around update, dimensions, data limits, build ticks, tick-to-label conversion, and label rotation) shipped with #26 — Chart.js fires them at every step of the scale's lifecycle, but in practice they're only needed for advanced custom scales or debugging.

#defaultScaleLifecycleCallbacks Source

defaultScaleLifecycleCallbacks :: ScaleLifecycleCallbacks

All optional fields set to Nothing.

#ActiveElement Source

data ActiveElement

Opaque type for a Chart.js active element in event callbacks.

#LegendItem Source

data LegendItem

Opaque type for a Chart.js legend item in legend callbacks.

#Legend Source

data Legend

Opaque type for the Chart.js legend object in legend callbacks.

#TooltipItem Source

data TooltipItem

Opaque type for a Chart.js tooltip item in tooltip callbacks.

#ComponentInput Source

type ComponentInput = { callbacks :: Callbacks, config :: ChartConfig, updateMode :: Maybe String }

Input for the Halogen chart component: a config, optional callbacks, and an update mode controlling animation on data changes.

#defaultCallbacks Source

defaultCallbacks :: Callbacks

All optional fields set to Nothing.

#defaultTooltipCallbacks Source

defaultTooltipCallbacks :: TooltipCallbacks

All optional fields set to Nothing.

#simpleInput Source

simpleInput :: ChartConfig -> ComponentInput

Create a ComponentInput from just a ChartConfig (no callbacks). Defaults to Just "none" for updateMode to suppress animation on updates.

#callbacksToForeign Source

callbacksToForeign :: Callbacks -> Foreign

Convert Callbacks to a plain JS object for the FFI merge function.

#hasCallbacks Source

hasCallbacks :: Callbacks -> Boolean

Check if any callbacks are set.

#buildOverlays Source

buildOverlays :: Callbacks -> ChartConfig -> Foreign

Build a combined overlays object containing callbacks plus dataset overlays (non-CSS colors, scriptable color functions, image point styles, scriptable non-color fields), plus per-chart-type dataset- defaults overlays (same categories at options.datasets.{type}), plus inline plugins (#24). This is the main entry point for the FFI merge function.

#hasOverlays Source

hasOverlays :: Callbacks -> ChartConfig -> Boolean

Check if there are any overlays that need to be merged. Returns true for any of: callbacks, non-CSS colors (gradient/pattern), scriptable color functions (SIFn), image point styles, scriptable non-color fields, per-chart-type dataset-defaults overlays under options.datasets, or inline plugins. Drives the createChartAuto routing decision.