/** * Theme: Uplon Admin Template * Author: Coderthemes * Email: coderthemes@gmail.com * Charts Widgets */ // MORRIS CHART WIDGET !function($) { "use strict"; var MorrisCharts = function() {}; //creates area chart MorrisCharts.prototype.createAreaChart = function(element, pointSize, lineWidth, data, xkey, ykeys, labels, lineColors) { Morris.Area({ element: element, pointSize: 0, lineWidth: 0, data: data, xkey: xkey, ykeys: ykeys, labels: labels, hideHover: 'auto', resize: true, gridLineColor: '#eef0f2', lineColors: lineColors }); }, //creates Stacked chart MorrisCharts.prototype.createStackedChart = function(element, data, xkey, ykeys, labels, lineColors) { Morris.Bar({ element: element, data: data, xkey: xkey, ykeys: ykeys, stacked: true, labels: labels, hideHover: 'auto', resize: true, //defaulted to true gridLineColor: '#eeeeee', barColors: lineColors }); }, MorrisCharts.prototype.init = function() { //creating area chart var $areaData = [ { y: '2009', a: 10, b: 20 }, { y: '2010', a: 75, b: 65 }, { y: '2011', a: 50, b: 40 }, { y: '2012', a: 75, b: 65 }, { y: '2013', a: 50, b: 40 }, { y: '2014', a: 75, b: 65 }, { y: '2015', a: 90, b: 60 } ]; this.createAreaChart('morris-area-example', 0, 0, $areaData, 'y', ['a', 'b'], ['Series A', 'Series B'], ['#3db9dc', "#039cfd"]); //creating Stacked chart var $stckedData = [ { y: '2005', a: 45, b: 180 }, { y: '2006', a: 75, b: 65 }, { y: '2007', a: 100, b: 90 }, { y: '2008', a: 75, b: 65 }, { y: '2009', a: 100, b: 90 }, { y: '2010', a: 75, b: 65 }, { y: '2011', a: 50, b: 40 }, { y: '2012', a: 75, b: 65 }, { y: '2013', a: 50, b: 40 }, { y: '2014', a: 75, b: 65 }, { y: '2015', a: 100, b: 90 } ]; this.createStackedChart('morris-bar-stacked', $stckedData, 'y', ['a', 'b'], ['Series A', 'Series B'], ['#3db9dc', '#ebeff2']); }, //init $.MorrisCharts = new MorrisCharts, $.MorrisCharts.Constructor = MorrisCharts }(window.jQuery), //initializing function($) { "use strict"; $.MorrisCharts.init(); }(window.jQuery); //CHARTIST CHART WIDGETS //Animating a Donut with Svg.animate var chart = new Chartist.Pie('#animating-donut', { series: [10, 20, 50, 20], labels: [1, 2, 3, 4] }, { donut: true, showLabel: false, plugins: [ Chartist.plugins.tooltip() ] }); chart.on('draw', function(data) { if(data.type === 'slice') { // Get the total path length in order to use for dash array animation var pathLength = data.element._node.getTotalLength(); // Set a dasharray that matches the path length as prerequisite to animate dashoffset data.element.attr({ 'stroke-dasharray': pathLength + 'px ' + pathLength + 'px' }); // Create animation definition while also assigning an ID to the animation for later sync usage var animationDefinition = { 'stroke-dashoffset': { id: 'anim' + data.index, dur: 1000, from: -pathLength + 'px', to: '0px', easing: Chartist.Svg.Easing.easeOutQuint, // We need to use `fill: 'freeze'` otherwise our animation will fall back to initial (not visible) fill: 'freeze' } }; // If this was not the first slice, we need to time the animation so that it uses the end sync event of the previous animation if(data.index !== 0) { animationDefinition['stroke-dashoffset'].begin = 'anim' + (data.index - 1) + '.end'; } // We need to set an initial value before the animation starts as we are not in guided mode which would do that for us data.element.attr({ 'stroke-dashoffset': -pathLength + 'px' }); // We can't use guided mode as the animations need to rely on setting begin manually // See http://gionkunz.github.io/chartist-js/api-documentation.html#chartistsvg-function-animate data.element.animate(animationDefinition, false); } }); // For the sake of the example we update the chart every time it's created with a delay of 8 seconds chart.on('created', function() { if(window.__anim21278907124) { clearTimeout(window.__anim21278907124); window.__anim21278907124 = null; } window.__anim21278907124 = setTimeout(chart.update.bind(chart), 10000); }); //Bi-polar bar chart var data = { labels: ['W1', 'W2', 'W3', 'W4', 'W5', 'W6', 'W7', 'W8', 'W9', 'W10'], series: [ [1, 2, 4, 8, 6, -2, -1, -4, -6, -2] ] }; var options = { high: 10, low: -10, axisX: { labelInterpolationFnc: function(value, index) { return index % 2 === 0 ? value : null; } }, plugins: [ Chartist.plugins.tooltip() ] }; new Chartist.Bar('#bi-polar-bar', data, options); //Line chart with area new Chartist.Line('#chart-with-area', { labels: [1, 2, 3, 4, 5, 6, 7, 8], series: [ [5, 9, 7, 8, 5, 3, 5, 4] ] }, { low: 0, showArea: true, plugins: [ Chartist.plugins.tooltip() ] }); //Simple pie chart var data = { series: [5, 3, 4] }; var sum = function(a, b) { return a + b }; new Chartist.Pie('#simple-pie', data, { labelInterpolationFnc: function(value) { return Math.round(value / data.series.reduce(sum) * 100) + '%'; } });