github.com/sym3tri/etcd@v0.2.1-0.20140422215517-a563d82f95d6/mod/dashboard/app/page/stats/stats-ctrl.js (about)

     1  'use strict';
     2  
     3  angular.module('etcd.page')
     4  .controller('StatsCtrl', function($scope, $modal, etcdApiSvc, pollerSvc) {
     5  
     6    $scope.followers = null;
     7    $scope.leader = null;
     8    $scope.leaderName = null;
     9  
    10    $scope.parseLatencyStats = function(stats) {
    11      $scope.followers = stats.followers;
    12      $scope.leaderName = stats.leaderName;
    13    };
    14  
    15    $scope.fetchLeaderDetails = function() {
    16      return etcdApiSvc.fetchPeerDetailStats($scope.leaderName)
    17      .then(function(leaderSelfStats) {
    18        $scope.leader = {
    19          name: $scope.leaderName,
    20          uptime: leaderSelfStats.leaderInfo.uptime
    21        };
    22      });
    23    };
    24  
    25    $scope.$watch('leaderName', function(leaderName) {
    26      if (leaderName) {
    27        pollerSvc.kill('leaderDetailsPoller');
    28        pollerSvc.register('leaderDetailsPoller', {
    29          fn: $scope.fetchLeaderDetails,
    30          scope: $scope,
    31          interval: 5000
    32        });
    33      }
    34    });
    35  
    36    $scope.openDetailModal = function(peerName) {
    37      $modal.open({
    38        templateUrl: '/page/stats/stats-detail.html',
    39        controller: 'StatsDetailCtrl',
    40        resolve: {
    41          peerName: d3.functor(peerName),
    42        }
    43      });
    44    };
    45  
    46    $scope.getSquareStatusClass = function(follower) {
    47      if (follower.latency.current < 25) {
    48        return 'ed-m-square-status--green';
    49      }
    50      if (follower.latency.current < 60) {
    51        return 'ed-m-square-status--orange';
    52      }
    53      return 'ed-m-square-status--red';
    54    };
    55  
    56    pollerSvc.register('statsPoller', {
    57      fn: etcdApiSvc.fetchLeaderStats,
    58      then: $scope.parseLatencyStats,
    59      scope: $scope,
    60      interval: 500
    61    });
    62  
    63  });