From 6e3fb3559d5944572f4a6f9849863503af47ea8c Mon Sep 17 00:00:00 2001 From: cubedro Date: Tue, 28 Apr 2015 18:22:11 +0300 Subject: [PATCH] added node avg propagation time --- models/node.js | 11 +++++++++++ public/js/filters.js | 17 +++++++++++++++++ views/index.jade | 3 +++ 3 files changed, 31 insertions(+) diff --git a/models/node.js b/models/node.js index 20150e9..8f479d3 100644 --- a/models/node.js +++ b/models/node.js @@ -27,6 +27,7 @@ var Node = function Node(data) uncles: [] }, blocktimeAvg: 0, + propagationAvg: 0, blockTimes: [], difficulty: [], latency: 0, @@ -108,6 +109,16 @@ Node.prototype.setStats = function(stats, history) if(typeof stats !== 'undefined' && typeof stats.block !== 'undefined' && typeof stats.block.number !== 'undefined') { this.history = history; + + var positives = _.filter(history, function(p) { + return p >= 0; + }); + + if(positives.length > 0) + stats.propagationAvg = Math.round(_.sum(positives)/positives.length); + else + stats.propagationAvg = 0; + this.stats = stats; return this.getStats(); diff --git a/public/js/filters.js b/public/js/filters.js index 24a318b..456448a 100644 --- a/public/js/filters.js +++ b/public/js/filters.js @@ -174,6 +174,23 @@ angular.module('netStatsApp.filters', []) return 'text-danger' }; }) +.filter('propagationAvgTimeClass', function() { + return function(propagation) { + if(propagation == 0) + return 'text-info'; + + if(propagation < 1000) + return 'text-success'; + + if(propagation < 3000) + return 'text-warning'; + + if(propagation < 7000) + return 'text-orange'; + + return 'text-danger' + }; +}) .filter('latencyFilter', function() { return function(stats) { if(stats.active === false) diff --git a/views/index.jade b/views/index.jade index e3da879..67bb36f 100644 --- a/views/index.jade +++ b/views/index.jade @@ -174,6 +174,8 @@ block content th.th-peerPropagationTime i.icon-gas(data-toggle="tooltip", data-placement="top", title="Propagation time", ng-click="orderTable(['-stats.active', '-stats.block.number', 'stats.block.propagation'], false)") th.th-peerPropagationChart + th.th-peerPropagationAvg + i.icon-gas(data-toggle="tooltip", data-placement="top", title="Average propagation time", ng-click="orderTable(['-stats.active', 'stats.propagationAvg'], false)") th i.icon-bulb(data-toggle="tooltip", data-placement="top", title="Up-time", ng-click="orderTable(['-stats.active', '-stats.uptime'], false)") tbody(ng-cloak) @@ -203,4 +205,5 @@ block content div.propagationBox span {{node.stats.block.propagation | blockPropagationFilter}} td.peerPropagationChart(class="{{node.id}}") + td(class="{{ node.stats.propagationAvg | propagationAvgTimeClass }}") {{ node.stats.propagationAvg | blockPropagationFilter }} td(class="{{ node.stats.uptime | upTimeClass : node.stats.active }}") {{ node.stats.uptime | upTimeFilter }}