X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=web-static%2Fgraphs.html;h=5bd8daaffe5c74bc26b445782a39152ace386ca1;hb=b142f305e6c8cfbe68e5bb5c8e2f907d5f679741;hp=7579dc8a5c76ffcfc330cd7cbde5722516e135a6;hpb=c4796e17d1a5d7efcd861ac90550e7f20cb97eb7;p=p2pool.git diff --git a/web-static/graphs.html b/web-static/graphs.html index 7579dc8..5bd8daa 100644 --- a/web-static/graphs.html +++ b/web-static/graphs.html @@ -75,6 +75,13 @@ function itemgetter(i) { return function(x) { return x[i]; } } function as_date(x) { return new Date(1000*x); } function not_null(x) { return x != null; } + var cloneOf = (function() { + function F(){} + return function(o) { + F.prototype = o; + return new F(); + } + }()); function get_area_mean(data) { var top = 0; @@ -87,9 +94,41 @@ return {"area": top, "mean": bottom==0?null:top/bottom}; } - function plot(g, unit, total_unit, lines, stack) { + function plot(g, unit, total_unit, lines, stack, proportion_view) { // lines is a list of objects which have attributes data, color, and label + var orig_unit = unit; + var orig_total_unit = total_unit; + var orig_lines = lines; + if(proportion_view) { + var totals = {}; + for(var i = 0; i < lines.length; ++i) { + var line = lines[i]; + for(var j = 0; j < line.data.length; ++j) { + var time_str = JSON.stringify(line.data[j][0]); + if(!totals.hasOwnProperty(time_str)) totals[time_str] = 0; + totals[time_str] += line.data[j][1]; + } + } + + var new_lines = []; + for(var i = 0; i < lines.length; ++i) { + var line = lines[i]; + var new_line = cloneOf(line); + + new_line.data = []; + for(var j = 0; j < line.data.length; ++j) { + var time_str = JSON.stringify(line.data[j][0]); + new_line.data.push([line.data[j][0], totals[time_str] ? line.data[j][1]*100/totals[time_str] : null, line.data[j][2]]); + } + + new_lines.push(new_line) + } + var lines = new_lines; + var unit = '%'; + var total_unit = null; + } + var table_div = document.createElement("div"); g.node().parentNode.insertBefore(table_div, g.node().nextSibling); table_div.style.display = "none"; @@ -100,6 +139,17 @@ .text('Show/hide table') .on('click', function() { table_div.style.display = table_div.style.display == "block" ? "none" : "block" }) .attr("style", "color:blue;text-decoration:underline;cursor:pointer"); + if(stack) { + d3.select(showhide).append('span').text(' '); + d3.select(showhide).append("a") + .text('Switch to/from proportion view') + .on('click', function() { + table_div.parentNode.removeChild(table_div); + showhide.parentNode.removeChild(showhide); + plot(g, orig_unit, orig_total_unit, orig_lines, stack, !proportion_view); + }) + .attr("style", "color:blue;text-decoration:underline;cursor:pointer"); + } for(var i = 0; i < lines.length; ++i) { var line = lines[i]; @@ -119,7 +169,8 @@ } d3.select(table_div).append('div').attr('style', 'clear:both'); - d3.select(table_div).append('p').append("a") + var p_after = d3.select(table_div).append('p'); + p_after.append("a") .text('Show/hide table') .on('click', function() { table_div.style.display = table_div.style.display == "block" ? "none" : "block" }) .attr("style", "color:blue;text-decoration:underline;cursor:pointer"); @@ -371,7 +422,8 @@ ]); plot_later(d3.select("#local_shares"), "H/s", "H", [ {"url": "../web/graph_data/local_share_hash_rate/last_" + lowerperiod, "color": "#0000FF", "label": "Total"}, - //{"url": getData("../web/graph_data/local_dead_share_hash_rate/last_" + lowerperiod, "color": "#FF0000", "label": "Dead"} + {"url": "../web/graph_data/local_dead_share_hash_rate/last_" + lowerperiod, "color": "#FF0000", "label": "Dead"}, + {"url": "../web/graph_data/local_orphan_share_hash_rate/last_" + lowerperiod, "color": "#00FF00", "label": "Orphan"} ]); plot_later(d3.select("#payout"), currency_info.symbol, null, [ {"url": "../web/graph_data/current_payout/last_" + lowerperiod, "color": "#0000FF"} @@ -379,10 +431,9 @@ d3.json("../web/graph_data/pool_rates/last_" + lowerperiod, function(data) { plot(d3.select('#pool'), 'H/s', 'H', data_to_lines(data), true); }); - plot_later(d3.select("#peers"), "", null, [ - {"url": "../web/graph_data/outgoing_peers/last_" + lowerperiod, "color": "#FF0000", "label": "Outgoing"}, - {"url": "../web/graph_data/incoming_peers/last_" + lowerperiod, "color": "#0000FF", "label": "Incoming"} - ], true); + d3.json("../web/graph_data/peers/last_" + lowerperiod, function(data) { + plot(d3.select('#peers'), '', null, data_to_lines(data, function(line){ return line.label == "incoming" }), true); + }); d3.json("../web/graph_data/miner_hash_rates/last_" + lowerperiod, function(data) { d3.json("../web/graph_data/miner_dead_hash_rates/last_" + lowerperiod, function(dead_data) {