/**
 * @name angularjsApp.controller:homeCtrl
 */


/**=========================================================
 * Module: flot-chart.js
 * Setup options and data for flot chart directive
 =========================================================*/

App.controller('homeCtrl', ['$scope','$http', 'ChartData', '$timeout','ChartInfo', function($scope,$http, ChartData, $timeout,ChartInfo) {
  'use strict';
  $scope.tolsend=0;
  $scope.daisend=0;
  $scope.timesend=0;
  $scope.mobantol=0;
  $scope.clicktol=0;
  $scope.noclicktol=0;
  $scope.replytol=0;
  $scope.untol=0;

  //初始化参数
  $http.post('./count_findCountHome.action')
      .success(function(data) {
        //成功之后做一些事情
    	  //总发送
    	if(data.tolsend <= 0){
    		$scope.tolsend = 0;
    	}else{
    		$scope.tolsend=data.tolsend;
    	}
    	 //待发送
    	if(data.daisend <= 0){
    		$scope.daisend = 0;
    	}else{
    		$scope.daisend=data.daisend;
    	}
    	//定时发送
    	if(data.timesend <= 0){
    		$scope.timesend = 0;
    	}else{
    		$scope.timesend=data.timesend;
    	}
    	//草稿
    	$scope.mobantol=0;
    	//草稿
    	if(data.clicktol <= 0){
    		$scope.clicktol = 0;
    	}else{
    		$scope.clicktol=data.clicktol;
    	}
    	//未点读
    	if(data.noclicktol <= 0){
    		$scope.noclicktol = 0;
    	}else{
    		$scope.noclicktol=data.noclicktol;
    	}
    	//回复
    	if(data.replytol <= 0){
    		$scope.replytol = 0;
    	}else{
    		$scope.replytol=data.replytol;
    	}
    	//退订
    	if(data.untol <= 0){
    		$scope.untol = 0;
    	}else{
    		$scope.untol=data.untol;
    	}
      }).error(function(data, status, headers, config) {
        //处理错误
      });

  // BAR
  // -----------------------------------
  $scope.barData=[{
    "label": "发送",
    "color": "#189e0b",
    "data": [
      ["发送", 0]
    ]
  },{
    "label": "点读",
    "color": "#e07808",
    "data": [
      ["点读", 0]
    ]
  },{
    "label": "回复",
    "color": "#0a99d5",
    "data": [
      ["回复", 0]
    ]
  },{
    "label": "退订",
    "color": "#d9d7d6",
    "data": [
      ["退订", 0]
    ]
  }]
  ChartInfo.home().then(function(data){
    $scope.barData=[{
      "label": "发送",
      "color": "#189e0b",
      "data": [
        ["发送", data.daysend]
      ]
    },{
      "label": "点读",
      "color": "#e07808",
      "data": [
        ["点读", data.dayclick]
      ]
    },{
      "label": "回复",
      "color": "#0a99d5",
      "data": [
        ["回复", data.dayreply]
      ]
    },{
      "label": "退订",
      "color": "#d9d7d6",
      "data": [
        ["退订", data.dayun]
      ]
    }];
  });
  $scope.barOptions = {
    series: {
      bars: {
        align: 'center',
        lineWidth: 0,
        show: true,
        barWidth: 0.4,
        fill: 0.9
      }
    },
    grid: {
      borderColor: '#eee',
      borderWidth: 1,
      hoverable: true,
      backgroundColor: '#fcfcfc'
    },
    tooltip: true,
    tooltipOpts: {
      content: function (label, x, y) { return x + ' : ' + y; }
    },
    xaxis: {
      tickColor: '#fcfcfc',
      mode: 'categories'
    },
    yaxis: {
      position: 'left',
      tickColor: '#eee'
    },
    shadowSize: 0
  };
  
  $scope.homeplans=[];
  $scope.gettimeline = function (id) {
    $http.post('./plan_findMarketingPlan.action', {
      currpage: id,
      pagesize: 10
    }, $scope.postCfg)
        .success(function (data) {
          if(data.planweekmap[data.nowday]){
            $scope.homeplans=data.planweekmap[data.nowday];
          }else{
            $scope.homeplans=[];
          }
        })
  };
  $scope.gettimeline(1);

  function deterdate(r1,r2){
    var r1_Year=r1.getFullYear();
    var r1_Month=r1.getMonth()+1;
    var r1_Date=r1.getDate();
    var getr1=r1_Year+r1_Month+r1_Date;
    var r2_Year=r2.getFullYear();
    var r2_Month=r2.getMonth()+1;
    var r2_Date=r2.getDate();
    var getr2=r2_Year+r2_Month+r2_Date;
    if(parseInt(getr2)-parseInt(getr1)==0){
      return '今天';
    }else if(parseInt(getr2)-parseInt(getr1)==1){
      return '昨天';
    }else{
      //if(r1_Month<10){
      //    r1_Month="0"+r1_Month;
      //}
      //if(r1_Date<10){
      //    r1_Date="0"+r1_Date;
      //}
      return r1_Year+'-'+r1_Month+'-'+r1_Date;
    }
  }


}]).service('ChartData', ["$resource", function($resource){

  var opts = {
    get: { method: 'GET', isArray: true }
  };
  return {
    load: function(source){
      return $resource(source, {}, opts).get();
    }
  };
}]);

/**=========================================================
 * Module: flot.js
 * Initializes the Flot chart plugin and handles data refresh
 =========================================================*/

App.directive('flot', ['$http', '$timeout', function($http, $timeout) {
  'use strict';
  return {
    restrict: 'EA',
    template: '<div></div>',
    scope: {
      dataset: '=?',
      options: '=',
      series: '=',
      callback: '=',
      src: '='
    },
    link: linkFunction
  };

  function linkFunction(scope, element, attributes) {
    var height, plot, plotArea, width;
    var heightDefault = 220;

    plot = null;

    width = attributes.width || '100%';
    height = attributes.height || heightDefault;

    plotArea = $(element.children()[0]);
    plotArea.css({
      width: width,
      height: height
    });

    function init() {
      var plotObj;
      if(!scope.dataset || !scope.options) return;
      plotObj = $.plot(plotArea, scope.dataset, scope.options);
      scope.$emit('plotReady', plotObj);
      if (scope.callback) {
        scope.callback(plotObj, scope);
      }

      return plotObj;
    }

    function onDatasetChanged(dataset) {
      if (plot) {
        plot.setData(dataset);
        plot.setupGrid();
        return plot.draw();
      } else {
        plot = init();
        onSerieToggled(scope.series);
        return plot;
      }
    }
    scope.$watchCollection('dataset', onDatasetChanged, true);

    function onSerieToggled (series) {
      if( !plot || !series ) return;
      var someData = plot.getData();
      for(var sName in series) {
        angular.forEach(series[sName], toggleFor(sName));
      }

      plot.setData(someData);
      plot.draw();

      function toggleFor(sName) {
        return function (s, i){
          if(someData[i] && someData[i][sName])
            someData[i][sName].show = s;
        };
      }
    }
    scope.$watch('series', onSerieToggled, true);

    function onSrcChanged(src) {

      if( src ) {

        $http.get(src)
            .success(function (data) {

              $timeout(function(){
                scope.dataset = data;
              });

            }).error(function(){
              $.error('Flot chart: Bad request.');
            });

      }
    }
    scope.$watch('src', onSrcChanged);
  }

}]);