ethstats-server/dist-lite/index.html

1 line
7.3 KiB
HTML

<!DOCTYPE html><html ng-app="netStatsApp"><head><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"><title>Ethereum Network Status</title><style type="text/css">[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { display: none !important; }</style><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400,600,700"><link rel="stylesheet" href="/css/netstats.min.css"></head><body><div ng-controller="StatsCtrl" class="container-fluid"><div ng-cloak class="row"><div class="col-xs-2 stat-holder"><div class="big-info bestblock text-info"><div class="pull-left icon-full-width"><i class="icon-block"></i></div><div class="big-details-holder"><span class="small-title">best block</span><span class="big-details">{{'#'}}{{ bestBlock | number}}</span></div><div class="clearfix"></div></div></div><div class="col-xs-2 stat-holder"><div class="big-info uncleCount text-info"><div class="pull-left icon-full-width"><i class="icon-uncle"></i></div><div class="big-details-holder"><span class="small-title">uncles&nbsp;<span class="small">(current / last 50)</span></span><span class="big-details">{{ bestStats.block.uncles.length }}/{{ uncleCount }}</span></div><div class="clearfix"></div></div></div><div class="col-xs-2 stat-holder"><div class="big-info blocktime {{ lastBlock | timeClass : true }}"><div class="pull-left icon-full-width"><i class="icon-time"></i></div><div class="big-details-holder"><span class="small-title">last block</span><span class="big-details">{{ lastBlock | blockTimeFilter }}</span></div><div class="clearfix"></div></div></div><div class="col-xs-2 stat-holder"><div class="big-info avgblocktime {{ avgBlockTime | avgTimeClass }}"><div class="pull-left icon-full-width"><i class="icon-gas"></i></div><div class="big-details-holder"><span class="small-title">avg block time</span><span class="big-details">{{ avgBlockTime | avgTimeFilter }}</span></div><div class="clearfix"></div></div></div><div class="col-xs-2 stat-holder"><div class="big-info difficulty text-orange"><div class="pull-left icon-full-width"><i class="icon-hashrate"></i></div><div class="big-details-holder"><span class="small-title">avg network hashrate</span><span ng-bind-html="avgHashrate | networkHashrateFilter" class="big-details"></span></div><div class="clearfix"></div></div></div><div class="col-xs-2 stat-holder"><div class="big-info difficulty text-danger"><div class="pull-left icon-full-width"><i class="icon-difficulty"></i></div><div class="big-details-holder"><span class="small-title">difficulty</span><span class="big-details"><span class="small-hash">{{ lastDifficulty | number }}</span></span></div><div class="clearfix"></div></div></div><div class="clearfix"></div></div><div ng-cloak class="row"><div style="padding-top: 0px;" class="col-xs-12 stats-boxes"><div class="row second-row"><div class="col-xs-4 stat-holder box"><div class="active-nodes {{ nodesActive | nodesActiveClass : nodesTotal }}"><i class="icon-node"></i><span class="small-title">active nodes</span><span class="small-value">{{nodesActive}}/{{nodesTotal}}</span></div></div><div class="col-xs-4 stat-holder box"><div class="gasprice {{ nodes | consensusClass : bestStats }}"><i class="icon-check-o"></i><span class="small-title">nodes status</span><span class="small-value">{{ nodes | consensusFilter : bestStats }}</span></div></div><div class="col-xs-4 stat-holder box"><div class="page-latency {{ {active: true, latency: latency} | latencyClass }}"><i class="icon-clock"></i><span class="small-title">page latency</span><span class="small-value">{{latency}} ms</span></div></div></div></div></div><div ng-cloak style="padding-top: 10px" class="row"><table class="table table-striped"><thead><tr class="text-info"><th class="th-nodecheck"><i data-toggle="tooltip" data-placement="top" title="Pin nodes to display first" ng-click="orderTable(['-stats.block.number', 'stats.block.propagation'], false)" class="icon-check-o"></i></th><th class="th-nodename"><i data-toggle="tooltip" data-placement="top" title="Node name" ng-click="orderTable(['info.name'], false)" class="icon-node"></i></th><th class="th-nodetype"><i data-toggle="tooltip" data-placement="top" title="Node type" ng-click="orderTable(['info.node'], false)" class="icon-laptop"></i></th><th class="th-latency"><i data-toggle="tooltip" data-placement="top" title="Node latency" ng-click="orderTable(['stats.latency'], false)" class="icon-clock"></i></th><th><i data-toggle="tooltip" data-placement="top" title="Last block" ng-click="orderTable(['-stats.block.number', 'stats.block.propagation'], false)" class="icon-block"></i></th><th class="th-blockhash">&nbsp;</th><th class="th-blockhash"><i data-toggle="tooltip" data-placement="top" title="Total difficulty" ng-click="orderTable(['-stats.block.totalDifficulty'], false)" class="icon-difficulty"></i></th><th class="th-blocktime"><i data-toggle="tooltip" data-placement="top" title="Last block time" ng-click="orderTable(['-stats.block.received'], false)" class="icon-time"></i></th><th class="th-peerPropagationTime"><i data-toggle="tooltip" data-placement="top" title="Propagation time" ng-click="orderTable(['-stats.block.number', 'stats.block.propagation'], false)" class="icon-gas"></i></th></tr></thead><tbody ng-cloak><tr ng-repeat="node in nodes | orderBy:predicate track by node.id" id="node_{{node.id}}" class="{{ node.stats | mainClass : bestBlock }}"><td class="td-nodecheck"><i ng-click="pinNode(node.id)" data-toggle="tooltip" data-placement="right" data-original-title="Click to {{ node.pinned ? 'un' : '' }}pin" class="{{ node.pinned | nodePinClass }}"></i></td><td rel="{{node.id}}" class="nodeInfo"><span data-toggle="tooltip" data-placement="top" data-html="true" data-original-title="{{node | geoTooltip}}" class="small">{{node.info.name}}</span><span class="small">&nbsp;({{node.info.ip}})</span><a href="https://github.com/ethereum/wiki/wiki/Network-Status#updating" target="_blank" data-toggle="tooltip" data-placement="top" data-html="true" data-original-title="Netstats client needs update.&lt;br&gt;Click this icon for instructions." class="small {{ node.info | nodeClientClass : currentApiVersion }}"><i class="icon-warning-o"></i></a></td><td><div ng-bind-html="node.info.node | nodeVersion" class="small"></div></td><td class="{{ node.readable.latencyClass }}"><span class="small">{{ node.readable.latency }}</span></td><td class="{{ node.stats | blockClass : bestBlock }}"><span class="{{ node.readable.forkMessage ? node.readable.forkClass : '' }}">{{'#'}}{{ node.stats.block.number | number }}</span><a data-toggle="tooltip" data-placement="top" data-html="true" data-original-title="{{ node.readable.forkMessage }}" class="small {{ node.readable.forkClass }}"><i class="icon-warning-o"></i></a></td><td class="{{ node.stats | blockClass : bestBlock }}"><span class="small">{{node.stats.block.hash | hashFilter}}</span></td><td class="{{ node.stats | blockClass : bestBlock }}"><span class="small">{{node.stats.block.totalDifficulty | number}}</span></td><td class="{{ node.stats.block.received | timeClass : node.stats.active }}">{{node.stats.block.received | blockTimeFilter }}</td><td class="{{ node.stats | propagationTimeClass : bestBlock }}"><div class="propagationBox"></div><span>{{node.stats.block.propagation | blockPropagationFilter}}</span></td></tr></tbody></table></div></div><script src="/js/netstats.min.js"></script></body></html>