| Current File : /home/d/i/g/digitaw/Ycof/Dashbord/js/dynamic-pie-chart.js |
(function() {
var pieCharts = document.querySelectorAll('.pie-chart');
Array.prototype.forEach.call(pieCharts, function(wrapperEl) {
// Pull our variables out of our helper div
var dataset = wrapperEl.dataset;
var percentage = dataset.percentage ? parseInt(dataset.percentage, 10) : 0;
var diameter = dataset.diameter ? parseInt(dataset.diameter, 10) : 150;
var strokeWidth = dataset.strokeWidth ? parseInt(dataset.strokeWidth, 10) : 15;
var fillColor = dataset.fillColor || '#f47b28'; // orange
var bgColor = dataset.bgColor || '#fac5a1'; // light orange
// Size our wrapper element and add our percentage
wrapperEl.style.height = diameter + 'px';
wrapperEl.style.width = diameter + 'px';
var percentageEl = document.createElement('span');
percentageEl.classList.add('pie-chart__percentage');
percentageEl.style.color = fillColor;
percentageEl.innerText = percentage + '%';
wrapperEl.appendChild(percentageEl);
// Setting up the values we're gonna use to draw our circles
var center = diameter;
var radius = center - (strokeWidth);
var startAngle = degreesToRadians(-90);
var fullCircle = degreesToRadians(365);
var endAngle = startAngle + degreesToRadians(percentage / 100 * 365);
// Draw our canvas! Note we're doubling our sizes so we look good on high res displays
var canvas = document.createElement('canvas');
canvas.classList.add('pie-chart__canvas');
canvas.height = diameter * 2;
canvas.width = diameter * 2;
var ctx = canvas.getContext('2d');
ctx.lineWidth = strokeWidth * 2;
ctx.strokeStyle = bgColor;
ctx.beginPath();
ctx.arc(center, center, radius, startAngle, fullCircle);
ctx.stroke();
ctx.strokeStyle = fillColor;
ctx.beginPath();
ctx.arc(center, center, radius, startAngle, endAngle);
ctx.stroke();
wrapperEl.appendChild(canvas);
});
function degreesToRadians(degrees) {
return (degrees / 360) * (2 * Math.PI);
}
})();