98 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			98 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								# 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.
							 |