first commit
This commit is contained in:
34
WebRoot/node_modules/chart.js/docs/configuration/README.md
generated
vendored
Normal file
34
WebRoot/node_modules/chart.js/docs/configuration/README.md
generated
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
# Configuration
|
||||
|
||||
The configuration is used to change how the chart behaves. There are properties to control styling, fonts, the legend, etc.
|
||||
|
||||
## Global Configuration
|
||||
|
||||
This concept was introduced in Chart.js 1.0 to keep configuration [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself), and allow for changing options globally across chart types, avoiding the need to specify options for each instance, or the default for a particular chart type.
|
||||
|
||||
Chart.js merges the options object passed to the chart with the global configuration using chart type defaults and scales defaults appropriately. This way you can be as specific as you would like in your individual chart configuration, while still changing the defaults for all chart types where applicable. The global general options are defined in `Chart.defaults.global`. The defaults for each chart type are discussed in the documentation for that chart type.
|
||||
|
||||
The following example would set the hover mode to 'nearest' for all charts where this was not overridden by the chart type defaults or the options passed to the constructor on creation.
|
||||
|
||||
```javascript
|
||||
Chart.defaults.global.hover.mode = 'nearest';
|
||||
|
||||
// Hover mode is set to nearest because it was not overridden here
|
||||
var chartHoverModeNearest = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: data,
|
||||
});
|
||||
|
||||
// This chart would have the hover mode that was passed in
|
||||
var chartDifferentHoverMode = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: data,
|
||||
options: {
|
||||
hover: {
|
||||
// Overrides the global setting
|
||||
mode: 'index'
|
||||
}
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
96
WebRoot/node_modules/chart.js/docs/configuration/animations.md
generated
vendored
Normal file
96
WebRoot/node_modules/chart.js/docs/configuration/animations.md
generated
vendored
Normal file
@ -0,0 +1,96 @@
|
||||
# Animations
|
||||
|
||||
Chart.js animates charts out of the box. A number of options are provided to configure how the animation looks and how long it takes
|
||||
|
||||
## Animation Configuration
|
||||
|
||||
The following animation options are available. The global options for are defined in `Chart.defaults.global.animation`.
|
||||
|
||||
| Name | Type | Default | Description
|
||||
| -----| ---- | --------| -----------
|
||||
| `duration` | `Number` | `1000` | The number of milliseconds an animation takes.
|
||||
| `easing` | `String` | `'easeOutQuart'` | Easing function to use. [more...](#easing)
|
||||
| `onProgress` | `Function` | `null` | Callback called on each step of an animation. [more...](#animation-callbacks)
|
||||
| `onComplete` | `Function` | `null` | Callback called at the end of an animation. [more...](#animation-callbacks)
|
||||
|
||||
## Easing
|
||||
Available options are:
|
||||
* `'linear'`
|
||||
* `'easeInQuad'`
|
||||
* `'easeOutQuad'`
|
||||
* `'easeInOutQuad'`
|
||||
* `'easeInCubic'`
|
||||
* `'easeOutCubic'`
|
||||
* `'easeInOutCubic'`
|
||||
* `'easeInQuart'`
|
||||
* `'easeOutQuart'`
|
||||
* `'easeInOutQuart'`
|
||||
* `'easeInQuint'`
|
||||
* `'easeOutQuint'`
|
||||
* `'easeInOutQuint'`
|
||||
* `'easeInSine'`
|
||||
* `'easeOutSine'`
|
||||
* `'easeInOutSine'`
|
||||
* `'easeInExpo'`
|
||||
* `'easeOutExpo'`
|
||||
* `'easeInOutExpo'`
|
||||
* `'easeInCirc'`
|
||||
* `'easeOutCirc'`
|
||||
* `'easeInOutCirc'`
|
||||
* `'easeInElastic'`
|
||||
* `'easeOutElastic'`
|
||||
* `'easeInOutElastic'`
|
||||
* `'easeInBack'`
|
||||
* `'easeOutBack'`
|
||||
* `'easeInOutBack'`
|
||||
* `'easeInBounce'`
|
||||
* `'easeOutBounce'`
|
||||
* `'easeInOutBounce'`
|
||||
|
||||
See [Robert Penner's easing equations](http://robertpenner.com/easing/).
|
||||
|
||||
## Animation Callbacks
|
||||
|
||||
The `onProgress` and `onComplete` callbacks are useful for synchronizing an external draw to the chart animation. The callback is passed a `Chart.Animation` instance:
|
||||
|
||||
```javascript
|
||||
{
|
||||
// Chart object
|
||||
chart: Chart,
|
||||
|
||||
// Current Animation frame number
|
||||
currentStep: Number,
|
||||
|
||||
// Number of animation frames
|
||||
numSteps: Number,
|
||||
|
||||
// Animation easing to use
|
||||
easing: String,
|
||||
|
||||
// Function that renders the chart
|
||||
render: Function,
|
||||
|
||||
// User callback
|
||||
onAnimationProgress: Function,
|
||||
|
||||
// User callback
|
||||
onAnimationComplete: Function
|
||||
}
|
||||
```
|
||||
|
||||
The following example fills a progress bar during the chart animation.
|
||||
```javascript
|
||||
var chart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: data,
|
||||
options: {
|
||||
animation: {
|
||||
onProgress: function(animation) {
|
||||
progress.value = animation.animationObject.currentStep / animation.animationObject.numSteps;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
Another example usage of these callbacks can be found on [Github](https://github.com/chartjs/Chart.js/blob/master/samples/advanced/progress-bar.html): this sample displays a progress bar showing how far along the animation is.
|
||||
85
WebRoot/node_modules/chart.js/docs/configuration/elements.md
generated
vendored
Normal file
85
WebRoot/node_modules/chart.js/docs/configuration/elements.md
generated
vendored
Normal file
@ -0,0 +1,85 @@
|
||||
# Elements
|
||||
|
||||
While chart types provide settings to configure the styling of each dataset, you sometimes want to style **all datasets the same way**. A common example would be to stroke all of the bars in a bar chart with the same colour but change the fill per dataset. Options can be configured for four different types of elements: **[arc](#arc-configuration)**, **[lines](#line-configuration)**, **[points](#point-configuration)**, and **[rectangles](#rectangle-configuration)**. When set, these options apply to all objects of that type unless specifically overridden by the configuration attached to a dataset.
|
||||
|
||||
## Global Configuration
|
||||
|
||||
The element options can be specified per chart or globally. The global options for elements are defined in `Chart.defaults.global.elements`. For example, to set the border width of all bar charts globally you would do:
|
||||
|
||||
```javascript
|
||||
Chart.defaults.global.elements.rectangle.borderWidth = 2;
|
||||
```
|
||||
|
||||
## Point Configuration
|
||||
Point elements are used to represent the points in a line chart or a bubble chart.
|
||||
|
||||
Global point options: `Chart.defaults.global.elements.point`
|
||||
|
||||
| Name | Type | Default | Description
|
||||
| -----| ---- | --------| -----------
|
||||
| `radius` | `Number` | `3` | Point radius.
|
||||
| [`pointStyle`](#point-styles) | `String` | `circle` | Point style.
|
||||
| `backgroundColor` | `Color` | `'rgba(0,0,0,0.1)'` | Point fill color.
|
||||
| `borderWidth` | `Number` | `1` | Point stroke width.
|
||||
| `borderColor` | `Color` | `'rgba(0,0,0,0.1)'` | Point stroke color.
|
||||
| `hitRadius` | `Number` | `1` | Extra radius added to point radius for hit detection.
|
||||
| `hoverRadius` | `Number` | `4` | Point radius when hovered.
|
||||
| `hoverBorderWidth` | `Number` | `1` | Stroke width when hovered.
|
||||
|
||||
### Point Styles
|
||||
|
||||
The following values are supported:
|
||||
- `'circle'`
|
||||
- `'cross'`
|
||||
- `'crossRot'`
|
||||
- `'dash'`
|
||||
- `'line'`
|
||||
- `'rect'`
|
||||
- `'rectRounded'`
|
||||
- `'rectRot'`
|
||||
- `'star'`
|
||||
- `'triangle'`
|
||||
|
||||
If the value is an image, that image is drawn on the canvas using [drawImage](https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/drawImage).
|
||||
|
||||
## Line Configuration
|
||||
Line elements are used to represent the line in a line chart.
|
||||
|
||||
Global line options: `Chart.defaults.global.elements.line`
|
||||
|
||||
| Name | Type | Default | Description
|
||||
| -----| ---- | --------| -----------
|
||||
| `tension` | `Number` | `0.4` | Bézier curve tension (`0` for no Bézier curves).
|
||||
| `backgroundColor` | `Color` | `'rgba(0,0,0,0.1)'` | Line fill color.
|
||||
| `borderWidth` | `Number` | `3` | Line stroke width.
|
||||
| `borderColor` | `Color` | `'rgba(0,0,0,0.1)'` | Line stroke color.
|
||||
| `borderCapStyle` | `String` | `'butt'` | Line cap style (see [MDN](https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap)).
|
||||
| `borderDash` | `Array` | `[]` | Line dash (see [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash)).
|
||||
| `borderDashOffset` | `Number` | `0` | Line dash offset (see [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset)).
|
||||
| `borderJoinStyle` | `String` | `'miter` | Line join style (see [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin)).
|
||||
| `capBezierPoints` | `Boolean` | `true` | `true` to keep Bézier control inside the chart, `false` for no restriction.
|
||||
| `fill` | `Boolean/String` | `true` | Fill location: `'zero'`, `'top'`, `'bottom'`, `true` (eq. `'zero'`) or `false` (no fill).
|
||||
| `stepped` | `Boolean` | `false` | `true` to show the line as a stepped line (`tension` will be ignored).
|
||||
|
||||
## Rectangle Configuration
|
||||
Rectangle elements are used to represent the bars in a bar chart.
|
||||
|
||||
Global rectangle options: `Chart.defaults.global.elements.rectangle`
|
||||
|
||||
| Name | Type | Default | Description
|
||||
| -----| ---- | --------| -----------
|
||||
| `backgroundColor` | `Color` | `'rgba(0,0,0,0.1)'` | Bar fill color.
|
||||
| `borderWidth` | `Number` | `0` | Bar stroke width.
|
||||
| `borderColor` | `Color` | `'rgba(0,0,0,0.1)'` | Bar stroke color.
|
||||
| `borderSkipped` | `String` | `'bottom'` | Skipped (excluded) border: `'bottom'`, `'left'`, `'top'` or `'right'`.
|
||||
|
||||
## Arc Configuration
|
||||
Arcs are used in the polar area, doughnut and pie charts.
|
||||
|
||||
Global arc options: `Chart.defaults.global.elements.arc`.
|
||||
|
||||
| Name | Type | Default | Description
|
||||
| -----| ---- | --------| -----------
|
||||
| `backgroundColor` | `Color` | `'rgba(0,0,0,0.1)'` | Arc fill color.
|
||||
| `borderColor` | `Color` | `'#fff'` | Arc stroke color.
|
||||
| `borderWidth`| `Number` | `2` | Arc stroke width.
|
||||
29
WebRoot/node_modules/chart.js/docs/configuration/layout.md
generated
vendored
Normal file
29
WebRoot/node_modules/chart.js/docs/configuration/layout.md
generated
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
# Layout Configuration
|
||||
|
||||
The layout configuration is passed into the `options.layout` namespace. The global options for the chart layout is defined in `Chart.defaults.global.layout`.
|
||||
|
||||
| Name | Type | Default | Description
|
||||
| -----| ---- | --------| -----------
|
||||
| `padding` | `Number` or `Object` | `0` | The padding to add inside the chart. [more...](#padding)
|
||||
|
||||
## Padding
|
||||
If this value is a number, it is applied to all sides of the chart (left, top, right, bottom). If this value is an object, the `left` property defines the left padding. Similarly the `right`, `top`, and `bottom` properties can also be specified.
|
||||
|
||||
Lets say you wanted to add 50px of padding to the left side of the chart canvas, you would do:
|
||||
|
||||
```javascript
|
||||
let chart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: data,
|
||||
options: {
|
||||
layout: {
|
||||
padding: {
|
||||
left: 50,
|
||||
right: 0,
|
||||
top: 0,
|
||||
bottom: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
170
WebRoot/node_modules/chart.js/docs/configuration/legend.md
generated
vendored
Normal file
170
WebRoot/node_modules/chart.js/docs/configuration/legend.md
generated
vendored
Normal file
@ -0,0 +1,170 @@
|
||||
# Legend Configuration
|
||||
|
||||
The chart legend displays data about the datasets that area appearing on the chart.
|
||||
|
||||
## Configuration options
|
||||
The legend configuration is passed into the `options.legend` namespace. The global options for the chart legend is defined in `Chart.defaults.global.legend`.
|
||||
|
||||
| Name | Type | Default | Description
|
||||
| -----| ---- | --------| -----------
|
||||
| `display` | `Boolean` | `true` | is the legend shown
|
||||
| `position` | `String` | `'top'` | Position of the legend. [more...](#position)
|
||||
| `fullWidth` | `Boolean` | `true` | Marks that this box should take the full width of the canvas (pushing down other boxes). This is unlikely to need to be changed in day-to-day use.
|
||||
| `onClick` | `Function` | | A callback that is called when a click event is registered on a label item
|
||||
| `onHover` | `Function` | | A callback that is called when a 'mousemove' event is registered on top of a label item
|
||||
| `reverse` | `Boolean` | `false` | Legend will show datasets in reverse order.
|
||||
| `labels` | `Object` | | See the [Legend Label Configuration](#legend-label-configuration) section below.
|
||||
|
||||
## Position
|
||||
Position of the legend. Options are:
|
||||
* `'top'`
|
||||
* `'left'`
|
||||
* `'bottom'`
|
||||
* `'right'`
|
||||
|
||||
## Legend Label Configuration
|
||||
|
||||
The legend label configuration is nested below the legend configuration using the `labels` key.
|
||||
|
||||
| Name | Type | Default | Description
|
||||
| -----| ---- | --------| -----------
|
||||
| `boxWidth` | `Number` | `40` | width of coloured box
|
||||
| `fontSize` | `Number` | `12` | font size of text
|
||||
| `fontStyle` | `String` | `'normal'` | font style of text
|
||||
| `fontColor` | `Color` | `'#666'` | Color of text
|
||||
| `fontFamily` | `String` | `"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif"` | Font family of legend text.
|
||||
| `padding` | `Number` | `10` | Padding between rows of colored boxes.
|
||||
| `generateLabels` | `Function` | | Generates legend items for each thing in the legend. Default implementation returns the text + styling for the color box. See [Legend Item](#legend-item-interface) for details.
|
||||
| `filter` | `Function` | `null` | Filters legend items out of the legend. Receives 2 parameters, a [Legend Item](#legend-item-interface) and the chart data.
|
||||
| `usePointStyle` | `Boolean` | `false` | Label style will match corresponding point style (size is based on fontSize, boxWidth is not used in this case).
|
||||
|
||||
## Legend Item Interface
|
||||
|
||||
Items passed to the legend `onClick` function are the ones returned from `labels.generateLabels`. These items must implement the following interface.
|
||||
|
||||
```javascript
|
||||
{
|
||||
// Label that will be displayed
|
||||
text: String,
|
||||
|
||||
// Fill style of the legend box
|
||||
fillStyle: Color,
|
||||
|
||||
// If true, this item represents a hidden dataset. Label will be rendered with a strike-through effect
|
||||
hidden: Boolean,
|
||||
|
||||
// For box border. See https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap
|
||||
lineCap: String,
|
||||
|
||||
// For box border. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash
|
||||
lineDash: Array[Number],
|
||||
|
||||
// For box border. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset
|
||||
lineDashOffset: Number,
|
||||
|
||||
// For box border. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin
|
||||
lineJoin: String,
|
||||
|
||||
// Width of box border
|
||||
lineWidth: Number,
|
||||
|
||||
// Stroke style of the legend box
|
||||
strokeStyle: Color
|
||||
|
||||
// Point style of the legend box (only used if usePointStyle is true)
|
||||
pointStyle: String
|
||||
}
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
The following example will create a chart with the legend enabled and turn all of the text red in color.
|
||||
|
||||
```javascript
|
||||
var chart = new Chart(ctx, {
|
||||
type: 'bar',
|
||||
data: data,
|
||||
options: {
|
||||
legend: {
|
||||
display: true,
|
||||
labels: {
|
||||
fontColor: 'rgb(255, 99, 132)'
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
## Custom On Click Actions
|
||||
|
||||
It can be common to want to trigger different behaviour when clicking an item in the legend. This can be easily achieved using a callback in the config object.
|
||||
|
||||
The default legend click handler is:
|
||||
```javascript
|
||||
function(e, legendItem) {
|
||||
var index = legendItem.datasetIndex;
|
||||
var ci = this.chart;
|
||||
var meta = ci.getDatasetMeta(index);
|
||||
|
||||
// See controller.isDatasetVisible comment
|
||||
meta.hidden = meta.hidden === null? !ci.data.datasets[index].hidden : null;
|
||||
|
||||
// We hid a dataset ... rerender the chart
|
||||
ci.update();
|
||||
}
|
||||
```
|
||||
|
||||
Lets say we wanted instead to link the display of the first two datasets. We could change the click handler accordingly.
|
||||
|
||||
```javascript
|
||||
var defaultLegendClickHandler = Chart.defaults.global.legend.onClick;
|
||||
var newLegendClickHandler = function (e, legendItem) {
|
||||
var index = legendItem.datasetIndex;
|
||||
|
||||
if (index > 1) {
|
||||
// Do the original logic
|
||||
defaultLegendClickHandler(e, legendItem);
|
||||
} else {
|
||||
let ci = this.chart;
|
||||
[ci.getDatasetMeta(0),
|
||||
ci.getDatasetMeta(1)].forEach(function(meta) {
|
||||
meta.hidden = meta.hidden === null? !ci.data.datasets[index].hidden : null;
|
||||
});
|
||||
ci.update();
|
||||
}
|
||||
};
|
||||
|
||||
var chart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: data,
|
||||
options: {
|
||||
legend: {
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
Now when you click the legend in this chart, the visibility of the first two datasets will be linked together.
|
||||
|
||||
## HTML Legends
|
||||
|
||||
Sometimes you need a very complex legend. In these cases, it makes sense to generate an HTML legend. Charts provide a `generateLegend()` method on their prototype that returns an HTML string for the legend.
|
||||
|
||||
To configure how this legend is generated, you can change the `legendCallback` config property.
|
||||
|
||||
```javascript
|
||||
var chart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: data,
|
||||
options: {
|
||||
legendCallback: function(chart) {
|
||||
// Return the HTML string here.
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
Note that legendCallback is not called automatically and you must call `generateLegend()` yourself in code when creating a legend using this method.
|
||||
|
||||
|
||||
42
WebRoot/node_modules/chart.js/docs/configuration/title.md
generated
vendored
Normal file
42
WebRoot/node_modules/chart.js/docs/configuration/title.md
generated
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
# Title
|
||||
|
||||
The chart title defines text to draw at the top of the chart.
|
||||
|
||||
## Title Configuration
|
||||
The title configuration is passed into the `options.title` namespace. The global options for the chart title is defined in `Chart.defaults.global.title`.
|
||||
|
||||
| Name | Type | Default | Description
|
||||
| -----| ---- | --------| -----------
|
||||
| `display` | `Boolean` | `false` | is the title shown
|
||||
| `position` | `String` | `'top'` | Position of title. [more...](#position)
|
||||
| `fontSize` | `Number` | `12` | Font size
|
||||
| `fontFamily` | `String` | `"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif"` | Font family for the title text.
|
||||
| `fontColor` | `Color` | `'#666'` | Font color
|
||||
| `fontStyle` | `String` | `'bold'` | Font style
|
||||
| `padding` | `Number` | `10` | Number of pixels to add above and below the title text.
|
||||
| `lineHeight` | `Number/String` | `1.2` | Height of an individual line of text (see [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/line-height))
|
||||
| `text` | `String/String[]` | `''` | Title text to display. If specified as an array, text is rendered on multiple lines.
|
||||
|
||||
### Position
|
||||
Possible title position values are:
|
||||
* `'top'`
|
||||
* `'left'`
|
||||
* `'bottom'`
|
||||
* `'right'`
|
||||
|
||||
## Example Usage
|
||||
|
||||
The example below would enable a title of 'Custom Chart Title' on the chart that is created.
|
||||
|
||||
```javascript
|
||||
var chart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: data,
|
||||
options: {
|
||||
title: {
|
||||
display: true,
|
||||
text: 'Custom Chart Title'
|
||||
}
|
||||
}
|
||||
})
|
||||
```
|
||||
349
WebRoot/node_modules/chart.js/docs/configuration/tooltip.md
generated
vendored
Normal file
349
WebRoot/node_modules/chart.js/docs/configuration/tooltip.md
generated
vendored
Normal file
@ -0,0 +1,349 @@
|
||||
# Tooltips
|
||||
|
||||
## Tooltip Configuration
|
||||
|
||||
The tooltip configuration is passed into the `options.tooltips` namespace. The global options for the chart tooltips is defined in `Chart.defaults.global.tooltips`.
|
||||
|
||||
| Name | Type | Default | Description
|
||||
| -----| ---- | --------| -----------
|
||||
| `enabled` | `Boolean` | `true` | Are on-canvas tooltips enabled
|
||||
| `custom` | `Function` | `null` | See [custom tooltip](#external-custom-tooltips) section.
|
||||
| `mode` | `String` | `'nearest'` | Sets which elements appear in the tooltip. [more...](../general/interactions/modes.md#interaction-modes).
|
||||
| `intersect` | `Boolean` | `true` | if true, the tooltip mode applies only when the mouse position intersects with an element. If false, the mode will be applied at all times.
|
||||
| `position` | `String` | `'average'` | The mode for positioning the tooltip. [more...](#position-modes)
|
||||
| `callbacks` | `Object` | | See the [callbacks section](#tooltip-callbacks)
|
||||
| `itemSort` | `Function` | | Sort tooltip items. [more...](#sort-callback)
|
||||
| `filter` | `Function` | | Filter tooltip items. [more...](#filter-callback)
|
||||
| `backgroundColor` | `Color` | `'rgba(0,0,0,0.8)'` | Background color of the tooltip.
|
||||
| `titleFontFamily` | `String` | `"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif"` | title font
|
||||
| `titleFontSize` | `Number` | `12` | Title font size
|
||||
| `titleFontStyle` | `String` | `'bold'` | Title font style
|
||||
| `titleFontColor` | `Color` | `'#fff'` | Title font color
|
||||
| `titleSpacing` | `Number` | `2` | Spacing to add to top and bottom of each title line.
|
||||
| `titleMarginBottom` | `Number` | `6` | Margin to add on bottom of title section.
|
||||
| `bodyFontFamily` | `String` | `"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif"` | body line font
|
||||
| `bodyFontSize` | `Number` | `12` | Body font size
|
||||
| `bodyFontStyle` | `String` | `'normal'` | Body font style
|
||||
| `bodyFontColor` | `Color` | `'#fff'` | Body font color
|
||||
| `bodySpacing` | `Number` | `2` | Spacing to add to top and bottom of each tooltip item.
|
||||
| `footerFontFamily` | `String` | `"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif"` | footer font
|
||||
| `footerFontSize` | `Number` | `12` | Footer font size
|
||||
| `footerFontStyle` | `String` | `'bold'` | Footer font style
|
||||
| `footerFontColor` | `Color` | `'#fff'` | Footer font color
|
||||
| `footerSpacing` | `Number` | `2` | Spacing to add to top and bottom of each footer line.
|
||||
| `footerMarginTop` | `Number` | `6` | Margin to add before drawing the footer.
|
||||
| `xPadding` | `Number` | `6` | Padding to add on left and right of tooltip.
|
||||
| `yPadding` | `Number` | `6` | Padding to add on top and bottom of tooltip.
|
||||
| `caretPadding` | `Number` | `2` | Extra distance to move the end of the tooltip arrow away from the tooltip point.
|
||||
| `caretSize` | `Number` | `5` | Size, in px, of the tooltip arrow.
|
||||
| `cornerRadius` | `Number` | `6` | Radius of tooltip corner curves.
|
||||
| `multiKeyBackground` | `Color` | `'#fff'` | Color to draw behind the colored boxes when multiple items are in the tooltip
|
||||
| `displayColors` | `Boolean` | `true` | if true, color boxes are shown in the tooltip
|
||||
| `borderColor` | `Color` | `'rgba(0,0,0,0)'` | Color of the border
|
||||
| `borderWidth` | `Number` | `0` | Size of the border
|
||||
|
||||
### Position Modes
|
||||
Possible modes are:
|
||||
* 'average'
|
||||
* 'nearest'
|
||||
|
||||
'average' mode will place the tooltip at the average position of the items displayed in the tooltip. 'nearest' will place the tooltip at the position of the element closest to the event position.
|
||||
|
||||
New modes can be defined by adding functions to the Chart.Tooltip.positioners map.
|
||||
|
||||
Example:
|
||||
```javascript
|
||||
/**
|
||||
* Custom positioner
|
||||
* @function Chart.Tooltip.positioners.custom
|
||||
* @param elements {Chart.Element[]} the tooltip elements
|
||||
* @param eventPosition {Point} the position of the event in canvas coordinates
|
||||
* @returns {Point} the tooltip position
|
||||
*/
|
||||
Chart.Tooltip.positioners.custom = function(elements, eventPosition) {
|
||||
/** @type {Chart.Tooltip} */
|
||||
var tooltip = this;
|
||||
|
||||
/* ... */
|
||||
|
||||
return {
|
||||
x: 0,
|
||||
y: 0
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
### Sort Callback
|
||||
|
||||
Allows sorting of [tooltip items](#tooltip-item-interface). Must implement at minimum a function that can be passed to [Array.prototype.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort). This function can also accept a third parameter that is the data object passed to the chart.
|
||||
|
||||
### Filter Callback
|
||||
|
||||
Allows filtering of [tooltip items](#tooltip-item-interface). Must implement at minimum a function that can be passed to [Array.prototype.filter](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/filter). This function can also accept a second parameter that is the data object passed to the chart.
|
||||
|
||||
## Tooltip Callbacks
|
||||
|
||||
The tooltip label configuration is nested below the tooltip configuration using the `callbacks` key. The tooltip has the following callbacks for providing text. For all functions, 'this' will be the tooltip object created from the Chart.Tooltip constructor.
|
||||
|
||||
All functions are called with the same arguments: a [tooltip item](#tooltip-item-interface) and the data object passed to the chart. All functions must return either a string or an array of strings. Arrays of strings are treated as multiple lines of text.
|
||||
|
||||
| Name | Arguments | Description
|
||||
| ---- | --------- | -----------
|
||||
| `beforeTitle` | `Array[tooltipItem], data` | Returns the text to render before the title.
|
||||
| `title` | `Array[tooltipItem], data` | Returns text to render as the title of the tooltip.
|
||||
| `afterTitle` | `Array[tooltipItem], data` | Returns text to render after the title.
|
||||
| `beforeBody` | `Array[tooltipItem], data` | Returns text to render before the body section.
|
||||
| `beforeLabel` | `tooltipItem, data` | Returns text to render before an individual label. This will be called for each item in the tooltip.
|
||||
| `label` | `tooltipItem, data` | Returns text to render for an individual item in the tooltip.
|
||||
| `labelColor` | `tooltipItem, chart` | Returns the colors to render for the tooltip item. [more...](#label-color-callback)
|
||||
| `labelTextColor` | `tooltipItem, chart` | Returns the colors for the text of the label for the tooltip item.
|
||||
| `afterLabel` | `tooltipItem, data` | Returns text to render after an individual label.
|
||||
| `afterBody` | `Array[tooltipItem], data` | Returns text to render after the body section
|
||||
| `beforeFooter` | `Array[tooltipItem], data` | Returns text to render before the footer section.
|
||||
| `footer` | `Array[tooltipItem], data` | Returns text to render as the footer of the tooltip.
|
||||
| `afterFooter` | `Array[tooltipItem], data` | Text to render after the footer section
|
||||
|
||||
### Label Callback
|
||||
|
||||
The label callback can change the text that displays for a given data point. A common example to round data values; the following example rounds the data to two decimal places.
|
||||
|
||||
```javascript
|
||||
var chart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: data,
|
||||
options: {
|
||||
tooltips: {
|
||||
callbacks: {
|
||||
label: function(tooltipItem, data) {
|
||||
var label = data.datasets[tooltipItem.datasetIndex].label || '';
|
||||
|
||||
if (label) {
|
||||
label += ': ';
|
||||
}
|
||||
label += Math.round(tooltipItem.yLabel * 100) / 100;
|
||||
return label;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
### Label Color Callback
|
||||
|
||||
For example, to return a red box for each item in the tooltip you could do:
|
||||
```javascript
|
||||
var chart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: data,
|
||||
options: {
|
||||
tooltips: {
|
||||
callbacks: {
|
||||
labelColor: function(tooltipItem, chart) {
|
||||
return {
|
||||
borderColor: 'rgb(255, 0, 0)',
|
||||
backgroundColor: 'rgb(255, 0, 0)'
|
||||
}
|
||||
},
|
||||
labelTextColor:function(tooltipItem, chart){
|
||||
return '#543453';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
|
||||
### Tooltip Item Interface
|
||||
|
||||
The tooltip items passed to the tooltip callbacks implement the following interface.
|
||||
|
||||
```javascript
|
||||
{
|
||||
// X Value of the tooltip as a string
|
||||
xLabel: String,
|
||||
|
||||
// Y value of the tooltip as a string
|
||||
yLabel: String,
|
||||
|
||||
// Index of the dataset the item comes from
|
||||
datasetIndex: Number,
|
||||
|
||||
// Index of this data item in the dataset
|
||||
index: Number,
|
||||
|
||||
// X position of matching point
|
||||
x: Number,
|
||||
|
||||
// Y position of matching point
|
||||
y: Number,
|
||||
}
|
||||
```
|
||||
|
||||
## External (Custom) Tooltips
|
||||
|
||||
Custom tooltips allow you to hook into the tooltip rendering process so that you can render the tooltip in your own custom way. Generally this is used to create an HTML tooltip instead of an oncanvas one. You can enable custom tooltips in the global or chart configuration like so:
|
||||
|
||||
```javascript
|
||||
var myPieChart = new Chart(ctx, {
|
||||
type: 'pie',
|
||||
data: data,
|
||||
options: {
|
||||
tooltips: {
|
||||
// Disable the on-canvas tooltip
|
||||
enabled: false,
|
||||
|
||||
custom: function(tooltipModel) {
|
||||
// Tooltip Element
|
||||
var tooltipEl = document.getElementById('chartjs-tooltip');
|
||||
|
||||
// Create element on first render
|
||||
if (!tooltipEl) {
|
||||
tooltipEl = document.createElement('div');
|
||||
tooltipEl.id = 'chartjs-tooltip';
|
||||
tooltipEl.innerHTML = "<table></table>";
|
||||
document.body.appendChild(tooltipEl);
|
||||
}
|
||||
|
||||
// Hide if no tooltip
|
||||
if (tooltipModel.opacity === 0) {
|
||||
tooltipEl.style.opacity = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
// Set caret Position
|
||||
tooltipEl.classList.remove('above', 'below', 'no-transform');
|
||||
if (tooltipModel.yAlign) {
|
||||
tooltipEl.classList.add(tooltipModel.yAlign);
|
||||
} else {
|
||||
tooltipEl.classList.add('no-transform');
|
||||
}
|
||||
|
||||
function getBody(bodyItem) {
|
||||
return bodyItem.lines;
|
||||
}
|
||||
|
||||
// Set Text
|
||||
if (tooltipModel.body) {
|
||||
var titleLines = tooltipModel.title || [];
|
||||
var bodyLines = tooltipModel.body.map(getBody);
|
||||
|
||||
var innerHtml = '<thead>';
|
||||
|
||||
titleLines.forEach(function(title) {
|
||||
innerHtml += '<tr><th>' + title + '</th></tr>';
|
||||
});
|
||||
innerHtml += '</thead><tbody>';
|
||||
|
||||
bodyLines.forEach(function(body, i) {
|
||||
var colors = tooltipModel.labelColors[i];
|
||||
var style = 'background:' + colors.backgroundColor;
|
||||
style += '; border-color:' + colors.borderColor;
|
||||
style += '; border-width: 2px';
|
||||
var span = '<span style="' + style + '"></span>';
|
||||
innerHtml += '<tr><td>' + span + body + '</td></tr>';
|
||||
});
|
||||
innerHtml += '</tbody>';
|
||||
|
||||
var tableRoot = tooltipEl.querySelector('table');
|
||||
tableRoot.innerHTML = innerHtml;
|
||||
}
|
||||
|
||||
// `this` will be the overall tooltip
|
||||
var position = this._chart.canvas.getBoundingClientRect();
|
||||
|
||||
// Display, position, and set styles for font
|
||||
tooltipEl.style.opacity = 1;
|
||||
tooltipEl.style.position = 'absolute';
|
||||
tooltipEl.style.left = position.left + tooltipModel.caretX + 'px';
|
||||
tooltipEl.style.top = position.top + tooltipModel.caretY + 'px';
|
||||
tooltipEl.style.fontFamily = tooltipModel._bodyFontFamily;
|
||||
tooltipEl.style.fontSize = tooltipModel.bodyFontSize + 'px';
|
||||
tooltipEl.style.fontStyle = tooltipModel._bodyFontStyle;
|
||||
tooltipEl.style.padding = tooltipModel.yPadding + 'px ' + tooltipModel.xPadding + 'px';
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
See [samples](http://www.chartjs.org/samples/) for examples on how to get started with custom tooltips.
|
||||
|
||||
## Tooltip Model
|
||||
The tooltip model contains parameters that can be used to render the tooltip.
|
||||
|
||||
```javascript
|
||||
{
|
||||
// The items that we are rendering in the tooltip. See Tooltip Item Interface section
|
||||
dataPoints: TooltipItem[],
|
||||
|
||||
// Positioning
|
||||
xPadding: Number,
|
||||
yPadding: Number,
|
||||
xAlign: String,
|
||||
yAlign: String,
|
||||
|
||||
// X and Y properties are the top left of the tooltip
|
||||
x: Number,
|
||||
y: Number,
|
||||
width: Number,
|
||||
height: Number,
|
||||
// Where the tooltip points to
|
||||
caretX: Number,
|
||||
caretY: Number,
|
||||
|
||||
// Body
|
||||
// The body lines that need to be rendered
|
||||
// Each object contains 3 parameters
|
||||
// before: String[] // lines of text before the line with the color square
|
||||
// lines: String[], // lines of text to render as the main item with color square
|
||||
// after: String[], // lines of text to render after the main lines
|
||||
body: Object[],
|
||||
// lines of text that appear after the title but before the body
|
||||
beforeBody: String[],
|
||||
// line of text that appear after the body and before the footer
|
||||
afterBody: String[],
|
||||
bodyFontColor: Color,
|
||||
_bodyFontFamily: String,
|
||||
_bodyFontStyle: String,
|
||||
_bodyAlign: String,
|
||||
bodyFontSize: Number,
|
||||
bodySpacing: Number,
|
||||
|
||||
// Title
|
||||
// lines of text that form the title
|
||||
title: String[],
|
||||
titleFontColor: Color,
|
||||
_titleFontFamily: String,
|
||||
_titleFontStyle: String,
|
||||
titleFontSize: Number,
|
||||
_titleAlign: String,
|
||||
titleSpacing: Number,
|
||||
titleMarginBottom: Number,
|
||||
|
||||
// Footer
|
||||
// lines of text that form the footer
|
||||
footer: String[],
|
||||
footerFontColor: Color,
|
||||
_footerFontFamily: String,
|
||||
_footerFontStyle: String,
|
||||
footerFontSize: Number,
|
||||
_footerAlign: String,
|
||||
footerSpacing: Number,
|
||||
footerMarginTop: Number,
|
||||
|
||||
// Appearance
|
||||
caretSize: Number,
|
||||
cornerRadius: Number,
|
||||
backgroundColor: Color,
|
||||
|
||||
// colors to render for each item in body[]. This is the color of the squares in the tooltip
|
||||
labelColors: Color[],
|
||||
|
||||
// 0 opacity is a hidden tooltip
|
||||
opacity: Number,
|
||||
legendColorBackground: Color,
|
||||
displayColors: Boolean,
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user