ethstats-server/dist-lite/index.html

1 line
7.6 KiB
HTML

<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"><title>Ethereum Community Status Dashboard</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 ng-app="netStatsApp"><div ng-controller="StatsCtrl" class="container-fluid"><div class="row"><div class="col-xs-12 stats-boxes"><div class="row second-row"><div class="col-xs-12 stat-holder box"><div class="active-nodes text-danger"><i class="icon-hashrate"></i><span class="small-title">SECURITY ALERT</span><span class="small-value"><a href="https://blog.ethereum.org/2015/09/10/security-alert-previous-security-patch-can-lead-to-invalid-state-root-on-go-clients-with-a-specific-transaction-sequence-fixed-please-update/" target="_blank" class="text-danger">Read the blog post</a></span></div></div></div></div><div class="col-xs-12 stats-boxes"><div class="row second-row"><div class="col-xs-12 stat-holder box"><div class="active-nodes text-orange"><i class="icon-hashrate"></i><span class="small-title">Olympic block #1028201 hash</span><span class="small-value">{{frontierHash}}</span></div></div></div></div></div><div ng-cloak class="row"><div class="col-lg-3 col-md-3 col-sm-6 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-lg-3 col-md-3 col-sm-6 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-lg-3 col-md-3 col-sm-6 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-lg-3 col-md-3 col-sm-6 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-md-4 col-sm-12 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-md-4 col-sm-12 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-md-4 col-sm-12 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 hidden-xs"><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 hidden-xs"><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 hidden-xs">&nbsp;</th><th class="th-blockhash hidden-xs"><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 hidden-xs"><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 class="hidden-xs"><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 }} hidden-xs"><span class="small">{{node.stats.block.hash | hashFilter}}</span></td><td class="{{ node.stats | blockClass : bestBlock }} hidden-xs"><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>