text: /**
   * @author a.demeshko
   * created on 12/16/15
   */
  (function() {
      'use strict';
  
      angular.module('Kronos.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);
          });
      }
  })();