'use strict';
|
|
|
|
/* Chart.js docs: https://www.chartjs.org/ */
|
|
|
|
window.chartColors = {
|
|
green: '#75c181', // rgba(117,193,129, 1)
|
|
blue: '#5b99ea', // rgba(91,153,234, 1)
|
|
gray: '#a9b5c9',
|
|
text: '#252930',
|
|
border: '#e7e9ed'
|
|
};
|
|
|
|
/* Random number generator for demo purpose */
|
|
var randomDataPoint = function(){ return Math.round(Math.random()*100)};
|
|
|
|
|
|
//Area line Chart Demo
|
|
|
|
var lineChartConfig = {
|
|
type: 'line',
|
|
|
|
data: {
|
|
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'],
|
|
|
|
datasets: [{
|
|
label: 'Dataset',
|
|
backgroundColor: "rgba(117,193,129,0.2)",
|
|
borderColor: "rgba(117,193,129, 0.8)",
|
|
data: [
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint()
|
|
],
|
|
}]
|
|
},
|
|
options: {
|
|
responsive: true,
|
|
|
|
legend: {
|
|
display: true,
|
|
position: 'bottom',
|
|
align: 'end',
|
|
},
|
|
|
|
tooltips: {
|
|
mode: 'index',
|
|
intersect: false,
|
|
titleMarginBottom: 10,
|
|
bodySpacing: 10,
|
|
xPadding: 16,
|
|
yPadding: 16,
|
|
borderColor: window.chartColors.border,
|
|
borderWidth: 1,
|
|
backgroundColor: '#fff',
|
|
bodyFontColor: window.chartColors.text,
|
|
titleFontColor: window.chartColors.text,
|
|
callbacks: {
|
|
label: function(tooltipItem, data) {
|
|
return tooltipItem.value + '%';
|
|
}
|
|
},
|
|
|
|
|
|
},
|
|
hover: {
|
|
mode: 'nearest',
|
|
intersect: true
|
|
},
|
|
scales: {
|
|
xAxes: [{
|
|
display: true,
|
|
gridLines: {
|
|
drawBorder: false,
|
|
color: window.chartColors.border,
|
|
},
|
|
scaleLabel: {
|
|
display: false,
|
|
|
|
}
|
|
}],
|
|
yAxes: [{
|
|
display: true,
|
|
gridLines: {
|
|
drawBorder: false,
|
|
color: window.chartColors.border,
|
|
},
|
|
scaleLabel: {
|
|
display: false,
|
|
},
|
|
ticks: {
|
|
beginAtZero: true,
|
|
userCallback: function(value, index, values) {
|
|
return value.toLocaleString() + '%';
|
|
}
|
|
},
|
|
}]
|
|
}
|
|
}
|
|
};
|
|
|
|
|
|
|
|
//Bar Chart Demo
|
|
|
|
var barChartConfig = {
|
|
type: 'bar',
|
|
|
|
data: {
|
|
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'],
|
|
datasets: [{
|
|
label: 'Dataset 1',
|
|
backgroundColor: "rgba(117,193,129,0.8)",
|
|
hoverBackgroundColor: "rgba(117,193,129,1)",
|
|
|
|
|
|
data: [
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint()
|
|
]
|
|
},
|
|
{
|
|
label: 'Dataset 2',
|
|
backgroundColor: "rgba(91,153,234,0.8)",
|
|
hoverBackgroundColor: "rgba(91,153,234,1)",
|
|
|
|
|
|
data: [
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint()
|
|
]
|
|
}
|
|
]
|
|
},
|
|
options: {
|
|
responsive: true,
|
|
legend: {
|
|
position: 'bottom',
|
|
align: 'end',
|
|
},
|
|
|
|
tooltips: {
|
|
mode: 'index',
|
|
intersect: false,
|
|
titleMarginBottom: 10,
|
|
bodySpacing: 10,
|
|
xPadding: 16,
|
|
yPadding: 16,
|
|
borderColor: window.chartColors.border,
|
|
borderWidth: 1,
|
|
backgroundColor: '#fff',
|
|
bodyFontColor: window.chartColors.text,
|
|
titleFontColor: window.chartColors.text,
|
|
callbacks: {
|
|
label: function(tooltipItem, data) {
|
|
return tooltipItem.value + '%';
|
|
}
|
|
},
|
|
|
|
|
|
},
|
|
scales: {
|
|
xAxes: [{
|
|
display: true,
|
|
gridLines: {
|
|
drawBorder: false,
|
|
color: window.chartColors.border,
|
|
},
|
|
|
|
}],
|
|
yAxes: [{
|
|
display: true,
|
|
gridLines: {
|
|
drawBorder: false,
|
|
color: window.chartColors.borders,
|
|
},
|
|
ticks: {
|
|
beginAtZero: true,
|
|
userCallback: function(value, index, values) {
|
|
return value + '%';
|
|
}
|
|
},
|
|
|
|
|
|
}]
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Pie Chart Demo
|
|
|
|
var pieChartConfig = {
|
|
type: 'pie',
|
|
data: {
|
|
datasets: [{
|
|
data: [
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
],
|
|
backgroundColor: [
|
|
window.chartColors.green,
|
|
window.chartColors.blue,
|
|
window.chartColors.gray,
|
|
|
|
],
|
|
label: 'Dataset 1'
|
|
}],
|
|
labels: [
|
|
'Green',
|
|
'Blue',
|
|
'Gray',
|
|
]
|
|
},
|
|
options: {
|
|
responsive: true,
|
|
legend: {
|
|
display: true,
|
|
position: 'bottom',
|
|
align: 'center',
|
|
},
|
|
|
|
tooltips: {
|
|
titleMarginBottom: 10,
|
|
bodySpacing: 10,
|
|
xPadding: 16,
|
|
yPadding: 16,
|
|
borderColor: window.chartColors.border,
|
|
borderWidth: 1,
|
|
backgroundColor: '#fff',
|
|
bodyFontColor: window.chartColors.text,
|
|
titleFontColor: window.chartColors.text,
|
|
|
|
/* Display % in tooltip - https://stackoverflow.com/questions/37257034/chart-js-2-0-doughnut-tooltip-percentages */
|
|
callbacks: {
|
|
label: function(tooltipItem, data) {
|
|
//get the concerned dataset
|
|
var dataset = data.datasets[tooltipItem.datasetIndex];
|
|
//calculate the total of this data set
|
|
var total = dataset.data.reduce(function(previousValue, currentValue, currentIndex, array) {
|
|
return previousValue + currentValue;
|
|
});
|
|
//get the current items value
|
|
var currentValue = dataset.data[tooltipItem.index];
|
|
//calculate the precentage based on the total and current item, also this does a rough rounding to give a whole number
|
|
var percentage = Math.floor(((currentValue/total) * 100)+0.5);
|
|
|
|
return percentage + "%";
|
|
},
|
|
},
|
|
|
|
|
|
},
|
|
}
|
|
};
|
|
|
|
|
|
// Doughnut Chart Demo
|
|
|
|
|
|
var doughnutChartConfig = {
|
|
type: 'doughnut',
|
|
data: {
|
|
datasets: [{
|
|
data: [
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
randomDataPoint(),
|
|
],
|
|
backgroundColor: [
|
|
window.chartColors.green,
|
|
window.chartColors.blue,
|
|
window.chartColors.gray,
|
|
|
|
],
|
|
label: 'Dataset 1'
|
|
}],
|
|
labels: [
|
|
'Green',
|
|
'Blue',
|
|
'Gray',
|
|
]
|
|
},
|
|
options: {
|
|
responsive: true,
|
|
legend: {
|
|
display: true,
|
|
position: 'bottom',
|
|
align: 'center',
|
|
},
|
|
|
|
tooltips: {
|
|
titleMarginBottom: 10,
|
|
bodySpacing: 10,
|
|
xPadding: 16,
|
|
yPadding: 16,
|
|
borderColor: window.chartColors.border,
|
|
borderWidth: 1,
|
|
backgroundColor: '#fff',
|
|
bodyFontColor: window.chartColors.text,
|
|
titleFontColor: window.chartColors.text,
|
|
|
|
animation: {
|
|
animateScale: true,
|
|
animateRotate: true
|
|
},
|
|
|
|
/* Display % in tooltip - https://stackoverflow.com/questions/37257034/chart-js-2-0-doughnut-tooltip-percentages */
|
|
callbacks: {
|
|
label: function(tooltipItem, data) {
|
|
//get the concerned dataset
|
|
var dataset = data.datasets[tooltipItem.datasetIndex];
|
|
//calculate the total of this data set
|
|
var total = dataset.data.reduce(function(previousValue, currentValue, currentIndex, array) {
|
|
return previousValue + currentValue;
|
|
});
|
|
//get the current items value
|
|
var currentValue = dataset.data[tooltipItem.index];
|
|
//calculate the precentage based on the total and current item, also this does a rough rounding to give a whole number
|
|
var percentage = Math.floor(((currentValue/total) * 100)+0.5);
|
|
|
|
return percentage + "%";
|
|
},
|
|
},
|
|
|
|
|
|
},
|
|
}
|
|
};
|
|
|
|
|
|
|
|
// Generate charts on load
|
|
window.addEventListener('load', function(){
|
|
|
|
var lineChart = document.getElementById('chart-line').getContext('2d');
|
|
window.myLine = new Chart(lineChart, lineChartConfig);
|
|
|
|
var barChart = document.getElementById('chart-bar').getContext('2d');
|
|
window.myBar = new Chart(barChart, barChartConfig);
|
|
|
|
var pieChart = document.getElementById('chart-pie').getContext('2d');
|
|
window.myPie = new Chart(pieChart, pieChartConfig);
|
|
|
|
var doughnutChart = document.getElementById('chart-doughnut').getContext('2d');
|
|
window.myDoughnut = new Chart(doughnutChart, doughnutChartConfig);
|
|
|
|
|
|
});
|
|
|