|  | @@ -0,0 +1,226 @@
 | 
	
		
			
				|  |  | +// import Chartist from 'chartist';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// Bar bipolar
 | 
	
		
			
				|  |  | +// -----------------------------------
 | 
	
		
			
				|  |  | +export const BarBipolar = {
 | 
	
		
			
				|  |  | +    data: {
 | 
	
		
			
				|  |  | +        labels: ['W1', 'W2', 'W3', 'W4', 'W5', 'W6', 'W7', 'W8', 'W9', 'W10'],
 | 
	
		
			
				|  |  | +        series: [
 | 
	
		
			
				|  |  | +            [1, 2, 4, 8, 6, -2, -1, -4, -6, -2]
 | 
	
		
			
				|  |  | +        ]
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    options: {
 | 
	
		
			
				|  |  | +        high: 10,
 | 
	
		
			
				|  |  | +        low: -10,
 | 
	
		
			
				|  |  | +        height: 280,
 | 
	
		
			
				|  |  | +        axisX: {
 | 
	
		
			
				|  |  | +            labelInterpolationFnc: function(value, index) {
 | 
	
		
			
				|  |  | +                return index % 2 === 0 ? value : null;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// Bar Horizontal
 | 
	
		
			
				|  |  | +// -----------------------------------
 | 
	
		
			
				|  |  | +export const BarHorizontal = {
 | 
	
		
			
				|  |  | +    data: {
 | 
	
		
			
				|  |  | +        labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
 | 
	
		
			
				|  |  | +        series: [
 | 
	
		
			
				|  |  | +            [5, 4, 3, 7, 5, 10, 3],
 | 
	
		
			
				|  |  | +            [3, 2, 9, 5, 4, 6, 4]
 | 
	
		
			
				|  |  | +        ]
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    options: {
 | 
	
		
			
				|  |  | +        seriesBarDistance: 10,
 | 
	
		
			
				|  |  | +        reverseData: true,
 | 
	
		
			
				|  |  | +        horizontalBars: true,
 | 
	
		
			
				|  |  | +        height: 280,
 | 
	
		
			
				|  |  | +        axisY: {
 | 
	
		
			
				|  |  | +            offset: 70
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// Line
 | 
	
		
			
				|  |  | +// -----------------------------------
 | 
	
		
			
				|  |  | +export const Line = {
 | 
	
		
			
				|  |  | +    data: {
 | 
	
		
			
				|  |  | +        labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
 | 
	
		
			
				|  |  | +        series: [
 | 
	
		
			
				|  |  | +            [12, 9, 7, 8, 5],
 | 
	
		
			
				|  |  | +            [2, 1, 3.5, 7, 3],
 | 
	
		
			
				|  |  | +            [1, 3, 4, 5, 6]
 | 
	
		
			
				|  |  | +        ]
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    options: {
 | 
	
		
			
				|  |  | +        fullWidth: true,
 | 
	
		
			
				|  |  | +        height: 280,
 | 
	
		
			
				|  |  | +        chartPadding: {
 | 
	
		
			
				|  |  | +            right: 40
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// SVG Animation
 | 
	
		
			
				|  |  | +// -----------------------------------
 | 
	
		
			
				|  |  | +export const SVGAnimation = {
 | 
	
		
			
				|  |  | +    data: {
 | 
	
		
			
				|  |  | +        labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
 | 
	
		
			
				|  |  | +        series: [
 | 
	
		
			
				|  |  | +            [1, 5, 2, 5, 4, 3],
 | 
	
		
			
				|  |  | +            [2, 3, 4, 8, 1, 2],
 | 
	
		
			
				|  |  | +            [5, 4, 3, 2, 1, 0.5]
 | 
	
		
			
				|  |  | +        ]
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    options: {
 | 
	
		
			
				|  |  | +        low: 0,
 | 
	
		
			
				|  |  | +        showArea: true,
 | 
	
		
			
				|  |  | +        showPoint: false,
 | 
	
		
			
				|  |  | +        fullWidth: true,
 | 
	
		
			
				|  |  | +        height: 300
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    events: {
 | 
	
		
			
				|  |  | +        draw: function(data) {
 | 
	
		
			
				|  |  | +            if (data.type === 'line' || data.type === 'area') {
 | 
	
		
			
				|  |  | +                data.element.animate({
 | 
	
		
			
				|  |  | +                    d: {
 | 
	
		
			
				|  |  | +                        begin: 2000 * data.index,
 | 
	
		
			
				|  |  | +                        dur: 2000,
 | 
	
		
			
				|  |  | +                        from: data.path.clone().scale(1, 0).translate(0, data.chartRect.height()).stringify(),
 | 
	
		
			
				|  |  | +                        to: data.path.clone().stringify(),
 | 
	
		
			
				|  |  | +                        // easing: Chartist.Svg.Easing.easeOutQuint
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// Slim animation
 | 
	
		
			
				|  |  | +// -----------------------------------
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// Let's put a sequence number aside so we can use it in the event callbacks
 | 
	
		
			
				|  |  | +var seq = 0,
 | 
	
		
			
				|  |  | +    delays = 80,
 | 
	
		
			
				|  |  | +    durations = 500;
 | 
	
		
			
				|  |  | +export const SlimAnimation = {
 | 
	
		
			
				|  |  | +    data: {
 | 
	
		
			
				|  |  | +        labels: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
 | 
	
		
			
				|  |  | +        series: [
 | 
	
		
			
				|  |  | +            [12, 9, 7, 8, 5, 4, 6, 2, 3, 3, 4, 6],
 | 
	
		
			
				|  |  | +            [4, 5, 3, 7, 3, 5, 5, 3, 4, 4, 5, 5],
 | 
	
		
			
				|  |  | +            [5, 3, 4, 5, 6, 3, 3, 4, 5, 6, 3, 4],
 | 
	
		
			
				|  |  | +            [3, 4, 5, 6, 7, 6, 4, 5, 6, 7, 6, 3]
 | 
	
		
			
				|  |  | +        ]
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    options: {
 | 
	
		
			
				|  |  | +        low: 0,
 | 
	
		
			
				|  |  | +        height: 300
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    events: {
 | 
	
		
			
				|  |  | +        // Once the chart is fully created we reset the sequence
 | 
	
		
			
				|  |  | +        created: function() {
 | 
	
		
			
				|  |  | +            seq = 0;
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        // On each drawn element by Chartist we use the Chartist.Svg API to trigger SMIL animations
 | 
	
		
			
				|  |  | +        draw: function(data) {
 | 
	
		
			
				|  |  | +            seq++;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (data.type === 'line') {
 | 
	
		
			
				|  |  | +                // If the drawn element is a line we do a simple opacity fade in. This could also be achieved using CSS3 animations.
 | 
	
		
			
				|  |  | +                data.element.animate({
 | 
	
		
			
				|  |  | +                    opacity: {
 | 
	
		
			
				|  |  | +                        // The delay when we like to start the animation
 | 
	
		
			
				|  |  | +                        begin: seq * delays + 1000,
 | 
	
		
			
				|  |  | +                        // Duration of the animation
 | 
	
		
			
				|  |  | +                        dur: durations,
 | 
	
		
			
				|  |  | +                        // The value where the animation should start
 | 
	
		
			
				|  |  | +                        from: 0,
 | 
	
		
			
				|  |  | +                        // The value where it should end
 | 
	
		
			
				|  |  | +                        to: 1
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            } else if (data.type === 'label' && data.axis === 'x') {
 | 
	
		
			
				|  |  | +                data.element.animate({
 | 
	
		
			
				|  |  | +                    y: {
 | 
	
		
			
				|  |  | +                        begin: seq * delays,
 | 
	
		
			
				|  |  | +                        dur: durations,
 | 
	
		
			
				|  |  | +                        from: data.y + 100,
 | 
	
		
			
				|  |  | +                        to: data.y,
 | 
	
		
			
				|  |  | +                        // We can specify an easing function from Chartist.Svg.Easing
 | 
	
		
			
				|  |  | +                        easing: 'easeOutQuart'
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            } else if (data.type === 'label' && data.axis === 'y') {
 | 
	
		
			
				|  |  | +                data.element.animate({
 | 
	
		
			
				|  |  | +                    x: {
 | 
	
		
			
				|  |  | +                        begin: seq * delays,
 | 
	
		
			
				|  |  | +                        dur: durations,
 | 
	
		
			
				|  |  | +                        from: data.x - 100,
 | 
	
		
			
				|  |  | +                        to: data.x,
 | 
	
		
			
				|  |  | +                        easing: 'easeOutQuart'
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            } else if (data.type === 'point') {
 | 
	
		
			
				|  |  | +                data.element.animate({
 | 
	
		
			
				|  |  | +                    x1: {
 | 
	
		
			
				|  |  | +                        begin: seq * delays,
 | 
	
		
			
				|  |  | +                        dur: durations,
 | 
	
		
			
				|  |  | +                        from: data.x - 10,
 | 
	
		
			
				|  |  | +                        to: data.x,
 | 
	
		
			
				|  |  | +                        easing: 'easeOutQuart'
 | 
	
		
			
				|  |  | +                    },
 | 
	
		
			
				|  |  | +                    x2: {
 | 
	
		
			
				|  |  | +                        begin: seq * delays,
 | 
	
		
			
				|  |  | +                        dur: durations,
 | 
	
		
			
				|  |  | +                        from: data.x - 10,
 | 
	
		
			
				|  |  | +                        to: data.x,
 | 
	
		
			
				|  |  | +                        easing: 'easeOutQuart'
 | 
	
		
			
				|  |  | +                    },
 | 
	
		
			
				|  |  | +                    opacity: {
 | 
	
		
			
				|  |  | +                        begin: seq * delays,
 | 
	
		
			
				|  |  | +                        dur: durations,
 | 
	
		
			
				|  |  | +                        from: 0,
 | 
	
		
			
				|  |  | +                        to: 1,
 | 
	
		
			
				|  |  | +                        easing: 'easeOutQuart'
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            } else if (data.type === 'grid') {
 | 
	
		
			
				|  |  | +                // Using data.axis we get x or y which we can use to construct our animation definition objects
 | 
	
		
			
				|  |  | +                var pos1Animation = {
 | 
	
		
			
				|  |  | +                    begin: seq * delays,
 | 
	
		
			
				|  |  | +                    dur: durations,
 | 
	
		
			
				|  |  | +                    from: data[data.axis.units.pos + '1'] - 30,
 | 
	
		
			
				|  |  | +                    to: data[data.axis.units.pos + '1'],
 | 
	
		
			
				|  |  | +                    easing: 'easeOutQuart'
 | 
	
		
			
				|  |  | +                };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                var pos2Animation = {
 | 
	
		
			
				|  |  | +                    begin: seq * delays,
 | 
	
		
			
				|  |  | +                    dur: durations,
 | 
	
		
			
				|  |  | +                    from: data[data.axis.units.pos + '2'] - 100,
 | 
	
		
			
				|  |  | +                    to: data[data.axis.units.pos + '2'],
 | 
	
		
			
				|  |  | +                    easing: 'easeOutQuart'
 | 
	
		
			
				|  |  | +                };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                var animations = {};
 | 
	
		
			
				|  |  | +                animations[data.axis.units.pos + '1'] = pos1Animation;
 | 
	
		
			
				|  |  | +                animations[data.axis.units.pos + '2'] = pos2Animation;
 | 
	
		
			
				|  |  | +                animations['opacity'] = {
 | 
	
		
			
				|  |  | +                    begin: seq * delays,
 | 
	
		
			
				|  |  | +                    dur: durations,
 | 
	
		
			
				|  |  | +                    from: 0,
 | 
	
		
			
				|  |  | +                    to: 1,
 | 
	
		
			
				|  |  | +                    easing: 'easeOutQuart'
 | 
	
		
			
				|  |  | +                };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                data.element.animate(animations);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |