diff --git a/public/css/style.css b/public/css/style.css index be8cefe..9dbb794 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -133,6 +133,10 @@ span.small-title span.small { word-spacing: nowrap !important; } +.big-info .big-details .small-hash { + font-size: 87%; +} + .big-info .big-details-holder { position: absolute; top: 15px; diff --git a/public/js/controllers.js b/public/js/controllers.js index 6accc8d..bd5d4d8 100644 --- a/public/js/controllers.js +++ b/public/js/controllers.js @@ -178,7 +178,7 @@ function StatsCtrl($scope, $filter, socket, _, toastr) { break; case "inactive": - if(typeof data.stats !== 'undefined') + if( !_.isUndefined(data.stats) ) $scope.nodes[findIndex({id: data.id})].stats = data.stats; toastr['error']("Node "+ $scope.nodes[findIndex({id: data.id})].info.name +" went away!", "Node connection was lost!"); @@ -186,9 +186,10 @@ function StatsCtrl($scope, $filter, socket, _, toastr) { break; case "latency": - var node = $scope.nodes[findIndex({id: data.id})]; + if( !_.isUndefined(data.id) ) + var node = $scope.nodes[findIndex({id: data.id})]; - if(typeof node.stats !== 'undefined' && typeof node.stats.latency !== 'undefined') + if( !_.isUndefined(node) && !_.isUndefined(node.stats) && !_.isUndefined(node.stats.latency)) $scope.nodes[findIndex({id: data.id})].stats.latency = data.latency; break; diff --git a/public/js/filters.js b/public/js/filters.js index 3e2149d..1964a4b 100644 --- a/public/js/filters.js +++ b/public/js/filters.js @@ -231,35 +231,42 @@ angular.module('netStatsApp.filters', []) return moment.duration(Math.round(diff), 's').humanize() + ' ago'; }; }) -.filter('networkHashrateFilter', function($sce) { - return function(hashes) { +.filter('networkHashrateFilter', ['$sce', '$filter', function($sce, filter) { + return function(hashes, isMining) { var result = 0; + var unit = 'K'; - if(hashes < 1000) { - return $sce.trustAsHtml(result.toFixed(1) + ' H/s'); + if(hashes !== 0 && hashes < 1000) { + result = hashes; + unit = ''; } - if(hashes < Math.pow(1000, 2)) { + if(hashes >= 1000 && hashes < Math.pow(1000, 2)) { result = hashes / 1000; - return $sce.trustAsHtml(result.toFixed(1) + ' KH/s'); + unit = 'K'; } - if(hashes < Math.pow(1000, 3)) { + if(hashes >= Math.pow(1000, 2) && hashes < Math.pow(1000, 3)) { result = hashes / Math.pow(1000, 2); - return $sce.trustAsHtml(result.toFixed(1) + ' MH/s'); + unit = 'M'; } - if(hashes < Math.pow(1000, 4)) { + if(hashes >= Math.pow(1000, 3) && hashes < Math.pow(1000, 4)) { result = hashes / Math.pow(1000, 3); - return $sce.trustAsHtml(result.toFixed(1) + ' GH/s'); + unit = 'G'; } - if(hashes < Math.pow(1000, 5)) { + if(hashes >= Math.pow(1000, 4) && hashes < Math.pow(1000, 5)) { result = hashes / Math.pow(1000, 4); - return $sce.trustAsHtml(result.toFixed(1) + ' TH/s'); + unit = 'T'; } + + if( !isMining ) + return $sce.trustAsHtml(filter('number')(result.toFixed(1)) + ' ' + unit + 'H/s'); + + return $sce.trustAsHtml('? ' + unit + 'KH/s'); }; -}) +}]) .filter('blockPropagationFilter', function() { return function(ms, prefix) { if(typeof prefix === 'undefined') diff --git a/views/index.jade b/views/index.jade index f5f4360..5be106f 100644 --- a/views/index.jade +++ b/views/index.jade @@ -104,7 +104,7 @@ block content div.big-info.chart.xdouble-chart(class="{{ blockPropagationAvg | propagationAvgTimeClass : true }}") //- i.icon-gas span.small-title block propagation - span.small-value {{ blockPropagationAvg | blockPropagationFilter : '' }} + //- span.small-value {{ blockPropagationAvg | blockPropagationFilter : '' }} histogram.big-details.d3-blockpropagation(data="blockPropagationChart") div.col-xs-3.stat-holder.pull-right @@ -192,7 +192,8 @@ block content td(class="{{ node.stats.mining | miningClass : node.stats.active }}") i(class="{{ node.stats.mining | miningIconClass }}") td(class="{{ node.stats.mining | hashrateClass : node.stats.active }}") - span.small {{node.stats.hashrate | hashrateFilter}} kH/s + span.small(ng-bind-html="node.stats.hashrate | networkHashrateFilter") + //- {{node.stats.hashrate | hashrateFilter}} kH/s td(class="{{ node.stats.peers | peerClass : node.stats.active }}", style="padding-left: 11px;") {{node.stats.peers}} td(style="padding-left: 15px;") {{node.stats.pending}} td(class="{{ node.stats | blockClass : bestBlock }}") {{'#'}}{{ node.stats.block.number | number }}