'outgoing_peers': graph.DataStreamDescription(dataview_descriptions),
'miner_hash_rates': graph.DataStreamDescription(dataview_descriptions, is_gauge=False, multivalues=True),
'miner_dead_hash_rates': graph.DataStreamDescription(dataview_descriptions, is_gauge=False, multivalues=True),
+ 'desired_versions': graph.DataStreamDescription(dataview_descriptions, multivalues=True),
}, hd_obj)
task.LoopingCall(lambda: _atomic_write(hd_path, json.dumps(hd.to_obj()))).start(100)
@pseudoshare_received.watch
hd.datastreams['current_payouts'].add_datum(t, dict((user, current_txouts_by_address[user]*1e-8) for user in miner_hash_rates if user in current_txouts_by_address))
hd.datastreams['incoming_peers'].add_datum(t, sum(1 for peer in p2p_node.peers.itervalues() if peer.incoming))
hd.datastreams['outgoing_peers'].add_datum(t, sum(1 for peer in p2p_node.peers.itervalues() if not peer.incoming))
+
+ vs = p2pool_data.get_desired_version_counts(tracker, current_work.value['best_share_hash'], 720)
+ vs_total = sum(vs.itervalues())
+ hd.datastreams['desired_versions'].add_datum(t, dict((str(k), v/vs_total) for k, v in vs.iteritems()))
task.LoopingCall(add_point).start(5)
new_root.putChild('graph_data', WebInterface(lambda source, view: hd.datastreams[source].dataviews[view].get_data(time.time())))
<h2>Miners</h2>
<div id="miners"></div>
+ <h2>Desired versions</h2>
+ <svg id="desired_versions"></svg>
+
<script type="text/javascript">
function compose() {
var funcs = arguments;
});
});
});
+
+ d3.json("/web/graph_data/desired_versions/last_" + lowerperiod, function(data) {
+ var vers = {}; for(var i = 0; i < data.length; ++i) for(var v in data[i][1]) vers[v] = null;
+ var verlist = []; for(var v in vers) verlist.push(v);
+ verlist.sort();
+
+ lines = [];
+ for(var i = 0; i < verlist.length; i++) {
+ lines.push({
+ data: data,
+ value_getter: function(v){ return function(d) { return v in d ? d[v] : null; } }(verlist[i]),
+ color: "#0000FF",
+ label: verlist[i]
+ });
+ }
+ plot(d3.select('#desired_versions'), '', null, lines);
+ });
}
periods = ["Hour", "Day", "Week", "Month", "Year"];