added update functionality (fixes #7)
This commit is contained in:
parent
a3968373c0
commit
4cfe4948af
17
app.js
17
app.js
@ -22,16 +22,21 @@ app.use(bodyParser.urlencoded({ extended: false }));
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
|
||||
var nodes = [],
|
||||
nodeStatus = [];
|
||||
nodeStatus = [],
|
||||
nodeInterval;
|
||||
|
||||
for(i in config) {
|
||||
var node = new Node(config[i], i);
|
||||
console.log(node);
|
||||
node.update();
|
||||
nodes[i] = node;
|
||||
nodeStatus[i] = node.info;
|
||||
nodes[i] = new Node(config[i], i);
|
||||
console.log(nodes[i]);
|
||||
nodeStatus[i] = nodes[i].update();
|
||||
}
|
||||
|
||||
nodeInterval = setInterval(function(){
|
||||
for(i in nodes){
|
||||
app.io.broadcast('update', nodes[i].update());
|
||||
}
|
||||
}, 10000);
|
||||
|
||||
app.get('/', function(req, res) {
|
||||
res.render('index', { title: 'Ethereum Network Status' });
|
||||
});
|
||||
|
@ -6,7 +6,7 @@ var Node = function Node(options, id)
|
||||
{
|
||||
this.info = options;
|
||||
this.info.geo = geoip.lookup(this.info.rpcHost);
|
||||
this.info.id = id;
|
||||
this.info.id = parseInt(id);
|
||||
this.info.stats = {
|
||||
active: false,
|
||||
peers: 0,
|
||||
|
@ -14,7 +14,7 @@ function StatsCtrl($scope, socket, _) {
|
||||
});
|
||||
|
||||
socket.on('update', function(data){
|
||||
$scope.nodes[data.node.id] = data.node;
|
||||
$scope.nodes[data.id] = data;
|
||||
|
||||
updateStats();
|
||||
});
|
||||
|
@ -3,34 +3,50 @@
|
||||
/* Filters */
|
||||
|
||||
angular.module('netStatsApp.filters', [])
|
||||
.filter('nodesActiveClass', function() {
|
||||
return function(active, total) {
|
||||
var ratio = active/total;
|
||||
|
||||
if(ratio >= 0.9)
|
||||
return 'text-success';
|
||||
|
||||
if(ratio >= 0.75)
|
||||
return 'text-info';
|
||||
|
||||
if(ratio >= 0.5)
|
||||
return 'text-warning';
|
||||
|
||||
return 'text-danger';
|
||||
};
|
||||
})
|
||||
.filter('mainClass', function() {
|
||||
return function(node, bestBlock) {
|
||||
if( ! node.active)
|
||||
return 'text-danger';
|
||||
|
||||
if( node.peers === 0)
|
||||
if(node.peers === 0)
|
||||
return 'text-danger';
|
||||
|
||||
return (node.peers <= 1 ? 'text-danger' : (node.peers > 1 && node.peers < 4 ? 'text-warning' : 'text-success'));
|
||||
}
|
||||
};
|
||||
})
|
||||
.filter('peerClass', function() {
|
||||
return function(peers) {
|
||||
return (peers <= 1 ? 'text-danger' : (peers > 1 && peers < 4 ? 'text-warning' : 'text-success'));
|
||||
}
|
||||
};
|
||||
})
|
||||
.filter('miningClass', function() {
|
||||
return function(mining) {
|
||||
return (! mining ? 'text-danger' : '');
|
||||
}
|
||||
};
|
||||
})
|
||||
.filter('miningIconClass', function() {
|
||||
return function(mining) {
|
||||
return (! mining ? 'icon-cancel' : 'icon-check');
|
||||
}
|
||||
};
|
||||
})
|
||||
.filter('blockClass', function() {
|
||||
return function(current, best) {
|
||||
return (best - current <= 1 ? '' : (best - current > 1 && best - current < 4 ? 'text-warning' : 'text-danger'));
|
||||
}
|
||||
};
|
||||
});
|
@ -11,7 +11,7 @@ block content
|
||||
div.clearfix
|
||||
|
||||
div.col-xs-6.stat-holder
|
||||
div.row.big-info.nodesactive.text-success
|
||||
div.row.big-info.nodesactive(class="{{ nodesActive | nodesActiveClass : nodesTotal }}")
|
||||
div.pull-left.icon-full-width
|
||||
i.icon-bulb
|
||||
div.pull-left
|
||||
|
Loading…
Reference in New Issue
Block a user