ethstats-server/public/js/controllers.js

79 lines
1.5 KiB
JavaScript
Raw Normal View History

2015-01-20 19:29:31 +01:00
'use strict';
/* Controllers */
2015-02-08 16:03:05 +01:00
function StatsCtrl($scope, $filter, socket, _) {
2015-01-20 19:29:31 +01:00
2015-02-05 16:54:04 +01:00
// Main Stats init
// ---------------
$scope.nodesTotal = 0;
$scope.nodesActive = 0;
$scope.bestBlock = 0;
$scope.lastBlock = 0;
$scope.upTimeTotal = 0;
2015-02-08 16:03:05 +01:00
$scope.map = [
{
radius: 5,
latitude: 11.515,
longitude: 165.1619
}
];
2015-01-20 19:29:31 +01:00
// Socket listeners
// ----------------
2015-02-08 16:03:05 +01:00
socket.emit('ready');
socket.on('init', function(data)
{
2015-01-20 19:29:31 +01:00
$scope.nodes = data.nodes;
2015-01-29 17:50:16 +01:00
updateStats();
});
2015-02-08 16:03:05 +01:00
socket.on('update', function(data)
{
2015-02-05 00:30:16 +01:00
$scope.nodes[data.id] = data;
2015-01-29 17:50:16 +01:00
updateStats();
});
function updateStats()
{
2015-01-20 19:29:31 +01:00
$scope.nodesTotal = $scope.nodes.length;
2015-02-08 16:03:05 +01:00
$scope.nodesActive = _.filter($scope.nodes, function(node) {
return node.stats.active == true;
}).length;
$scope.bestBlock = _.max($scope.nodes, function(node) {
return parseInt(node.stats.block.height);
}).stats.block.height;
$scope.lastBlock = _.max($scope.nodes, function(node) {
return parseInt(node.stats.block.timestamp);
}).stats.block.timestamp;
$scope.upTimeTotal = _.reduce($scope.nodes, function(total, node) {
return total + node.stats.uptime.total;
}, 0) / $scope.nodes.length;
$scope.map = _.map($scope.nodes, function(node) {
if(node.geo != null)
return {
radius: 3,
latitude: node.geo.ll[0],
longitude: node.geo.ll[1],
fillKey: $filter('bubbleClass')(node, $scope.bestBlock)
};
else
return {
radius: 0,
latitude: 0,
longitude: 0
};
});
2015-01-29 17:50:16 +01:00
}
2015-01-20 19:29:31 +01:00
}