|
|
@@ -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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|