easy-pie-chart
Lightweight plugin to render simple, animated and retina optimized pie charts


Features

- highly customizable
- very easy to implement
- resolution independent (retina optimized)
- uses
requestAnimationFrame
for smooth animations on modern devices and - works in all modern browsers, even in IE7+ with excanvas
framework support
- Vanilla JS (no dependencies) (~872 bytes)
- jQuery plugin (~921 bytes)
- Angular Module (~983 bytes)
Get started
Installation
You can also use bower to install the component:$ bower install jquery.easy-pie-chart
jQuery
To use the easy pie chart plugin you need to load the current version of jQuery (> 1.6.4) and the source of the plugin.<div class="chart" data-percent="73" data-scale-color="#ffb400">73%</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="/path/to/jquery.easy-pie-chart.js"></script>
<script>
$(function() {
$('.chart').easyPieChart({
//your options goes here
});
});
</script>
Vanilla JS
If you don't want to use jQuery, implement the Vanilla JS version without any dependencies.<div class="chart" data-percent="73">73%</div>
<script src="/path/to/easy-pie-chart.js"></script>
<script>
var element = document.querySelector('.chart');
new EasyPieChart(element, {
// your options goes here
});
</script>
AngularJS
<div ng-controller="chartCtrl">
<div easypiechart options="options" percent="percent"></div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js"></script>
<script src="../dist/angular.easypiechart.min.js"></script>
<script>
var app = angular.module('app', ['easypiechart']);
app.controller('chartCtrl', ['$scope', function ($scope) {
$scope.percent = 65;
$scope.options = {
animate:{
duration:0,
enabled:false
},
barColor:'#2C3E50',
scaleColor:false,
lineWidth:20,
lineCap:'circle'
};
}]);
</script>
Options
You can pass these options to the initialize function to set a custom look and feel for the plugin.Callbacks
All callbacks will only be called ifanimate
is not false
.Plugin api
jQuery
$(function() {
// instantiate the plugin
...
// update
$('.chart').data('easyPieChart').update(40);
...
// disable animation
$('.chart').data('easyPieChart').disableAnimation();
...
// enable animation
$('.chart').data('easyPieChart').enableAnimation();
});
Vanilla JS
// instantiate the plugin
var chart = new EasyPieChart(element, options);
// update
chart.update(40);
// disable animation
chart.disableAnimation();
// enable animation
chart.enableAnimation();
Using a gradient
new EasyPieChart(element, {
barColor: function(percent) {
var ctx = this.renderer.ctx();
var canvas = this.renderer.canvas();
var gradient = ctx.createLinearGradient(0,0,canvas.width,0);
gradient.addColorStop(0, "#ffe57e");
gradient.addColorStop(1, "#de5900");
return gradient;
}
});
AngularJS
For a value binding you need to add thepercent
attribute and bind it to your controller.RequireJS
When using RequireJS you can define your own name. Examples can be found in thedemo/requirejs.html
.Browser Support
Native support- Chrome
- Safari
- FireFox
- Opera
- Internet Explorer 9+
Support for Internet Explorer 7 and 8 with excanvas polyfill.
Test
To run the test just use the karma adapter of grunt:grunt test