| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 'use strict';
- angular.module('etcd.page')
- .controller('StatsCtrl', function($scope, $modal, etcdApiSvc, pollerSvc) {
- $scope.followers = null;
- $scope.leader = null;
- $scope.leaderName = null;
- $scope.parseLatencyStats = function(stats) {
- $scope.followers = stats.followers;
- $scope.leaderName = stats.leaderName;
- };
- $scope.fetchLeaderDetails = function() {
- return etcdApiSvc.fetchPeerDetailStats($scope.leaderName)
- .then(function(leaderSelfStats) {
- $scope.leader = {
- name: $scope.leaderName,
- uptime: leaderSelfStats.leaderInfo.uptime
- };
- });
- };
- $scope.$watch('leaderName', function(leaderName) {
- if (leaderName) {
- pollerSvc.kill('leaderDetailsPoller');
- pollerSvc.register('leaderDetailsPoller', {
- fn: $scope.fetchLeaderDetails,
- scope: $scope,
- interval: 5000
- });
- }
- });
- $scope.openDetailModal = function(peerName) {
- $modal.open({
- templateUrl: '/page/stats/stats-detail.html',
- controller: 'StatsDetailCtrl',
- resolve: {
- peerName: d3.functor(peerName),
- }
- });
- };
- $scope.getSquareStatusClass = function(follower) {
- if (follower.latency.current < 25) {
- return 'ed-m-square-status--green';
- }
- if (follower.latency.current < 60) {
- return 'ed-m-square-status--orange';
- }
- return 'ed-m-square-status--red';
- };
- pollerSvc.register('statsPoller', {
- fn: etcdApiSvc.fetchLeaderStats,
- then: $scope.parseLatencyStats,
- scope: $scope,
- interval: 500
- });
- });
|