blur-admin/src/app/pages/charts/chartist/chartistCtrl.js

240 lines
5.9 KiB
JavaScript

/**
* @author a.demeshko
* created on 12/16/15
*/
(function () {
'use strict';
angular.module('BlurAdmin.pages.charts.chartist')
.controller('chartistCtrl', chartistCtrl);
/** @ngInject */
function chartistCtrl($scope, $timeout, baConfig) {
$scope.simpleLineOptions = {
color: baConfig.colors.defaultText,
fullWidth: true,
height: "300px",
chartPadding: {
right: 40
}
};
$scope.simpleLineData = {
labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'],
series: [
[20, 20, 12, 45, 50],
[10, 45, 30, 14, 12],
[34, 12, 12, 40, 50],
[10, 43, 25, 22, 16],
[3, 6, 30, 33, 43]
]
};
$scope.areaLineData = {
labels: [1, 2, 3, 4, 5, 6, 7, 8],
series: [
[5, 9, 7, 8, 5, 3, 5, 4]
]
};
$scope.areaLineOptions = {
fullWidth: true,
height: "300px",
low: 0,
showArea: true
};
$scope.biLineData = {
labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
series: [
[1, 2, 3, 1, -2, 0, 1],
[-2, -1, -2, -1, -2.5, -1, -2],
[0, 0, 0, 1, 2, 2.5, 2],
[2.5, 2, 1, 0.5, 1, 0.5, -1]
]
};
$scope.biLineOptions = {
height: "300px",
high: 3,
low: -3,
showArea: true,
showLine: false,
showPoint: false,
fullWidth: true,
axisX: {
showGrid: false
}
};
$scope.simpleBarData = {
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
series: [
[15, 24, 43, 27, 5, 10, 23, 44, 68, 50, 26, 8],
[13, 22, 49, 22, 4, 6, 24, 46, 57, 48, 22, 4]
]
};
$scope.simpleBarOptions = {
fullWidth: true,
height: "300px"
};
$scope.multiBarData = {
labels: ['Quarter 1', 'Quarter 2', 'Quarter 3', 'Quarter 4'],
series: [
[5, 4, 3, 7],
[3, 2, 9, 5],
[1, 5, 8, 4],
[2, 3, 4, 6],
[4, 1, 2, 1]
]
};
$scope.multiBarOptions = {
fullWidth: true,
height: "300px",
stackBars: true,
axisX: {
labelInterpolationFnc: function (value) {
return value.split(/\s+/).map(function (word) {
return word[0];
}).join('');
}
},
axisY: {
offset: 20
}
};
$scope.multiBarResponsive = [
['screen and (min-width: 400px)', {
reverseData: true,
horizontalBars: true,
axisX: {
labelInterpolationFnc: Chartist.noop
},
axisY: {
offset: 60
}
}],
['screen and (min-width: 700px)', {
stackBars: false,
reverseData: false,
horizontalBars: false,
seriesBarDistance: 15
}]
];
$scope.stackedBarData = {
labels: ['Quarter 1', 'Quarter 2', 'Quarter 3', 'Quarter 4'],
series: [
[800000, 1200000, 1400000, 1300000],
[200000, 400000, 500000, 300000],
[100000, 200000, 400000, 600000]
]
};
$scope.stackedBarOptions = {
fullWidth: true,
height: "300px",
stackBars: true,
axisY: {
labelInterpolationFnc: function (value) {
return (value / 1000) + 'k';
}
}
};
$scope.simplePieData = {
series: [5, 3, 4]
};
$scope.simplePieOptions = {
fullWidth: true,
height: "300px",
weight: "300px",
labelInterpolationFnc: function (value) {
return Math.round(value / 12 * 100) + '%';
}
};
$scope.labelsPieData = {
labels: ['Bananas', 'Apples', 'Grapes'],
series: [20, 15, 40]
};
$scope.labelsPieOptions = {
fullWidth: true,
height: "300px",
weight: "300px",
labelDirection: 'explode',
labelInterpolationFnc: function (value) {
return value[0];
}
};
$scope.simpleDonutData = {
labels: ['Bananas', 'Apples', 'Grapes'],
series: [20, 15, 40]
};
$scope.simpleDonutOptions = {
fullWidth: true,
donut: true,
height: "300px",
weight: "300px",
labelDirection: 'explode',
labelInterpolationFnc: function (value) {
return value[0];
}
};
$scope.donutResponsive = getResponsive(5, 40);
$scope.pieResponsive = getResponsive(20, 80);
function getResponsive(padding, offset){
return [
['screen and (min-width: 1550px)', {
chartPadding: padding,
labelOffset: offset,
labelDirection: 'explode',
labelInterpolationFnc: function (value) {
return value;
}
}],
['screen and (max-width: 1200px)', {
chartPadding: padding,
labelOffset: offset,
labelDirection: 'explode',
labelInterpolationFnc: function (value) {
return value;
}
}],
['screen and (max-width: 600px)', {
chartPadding: 0,
labelOffset: 0,
labelInterpolationFnc: function (value) {
return value[0];
}
}]
];
}
$timeout(function(){
new Chartist.Line('#line-chart', $scope.simpleLineData, $scope.simpleLineOptions);
new Chartist.Line('#area-chart', $scope.areaLineData, $scope.areaLineOptions);
new Chartist.Line('#bi-chart', $scope.biLineData, $scope.biLineOptions);
new Chartist.Bar('#simple-bar', $scope.simpleBarData, $scope.simpleBarOptions);
new Chartist.Bar('#multi-bar', $scope.multiBarData, $scope.multiBarOptions, $scope.multiBarResponsive);
new Chartist.Bar('#stacked-bar', $scope.stackedBarData, $scope.stackedBarOptions);
new Chartist.Pie('#simple-pie', $scope.simplePieData, $scope.simplePieOptions, $scope.pieResponsive);
new Chartist.Pie('#label-pie', $scope.labelsPieData, $scope.labelsPieOptions);
new Chartist.Pie('#donut', $scope.simpleDonutData, $scope.simpleDonutOptions, $scope.donutResponsive);
});
}
})();