added plotting of desired versions
authorForrest Voight <forrest@forre.st>
Thu, 3 May 2012 06:44:05 +0000 (02:44 -0400)
committerForrest Voight <forrest@forre.st>
Thu, 3 May 2012 06:44:05 +0000 (02:44 -0400)
p2pool/web.py
web-static/graphs.html

index 7640e99..866dfcb 100644 (file)
@@ -331,6 +331,7 @@ def get_web_root(tracker, current_work, current_work2, get_current_txouts, datad
         '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
@@ -364,6 +365,10 @@ def get_web_root(tracker, current_work, current_work2, get_current_txouts, datad
         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())))
     
index 1c95ea4..edd840a 100644 (file)
@@ -47,6 +47,9 @@
         <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"];