UNPKG

cryptocurrency-pool-server

Version:

An extremely efficient, highly scalable, all-in-one, easy to setup cryptocurrency pool server

12 lines 5.55 kB
function f(){var b={};g=[];for(var a=0;a<k.length;a++)for(var c in k[a].pools)-1===g.indexOf(c)&&g.push(c);for(a=0;a<k.length;a++)for(var h=1E3*k[a].time,e=0;e<g.length;e++){var d=g[e],n=b[d]=b[d]||{hashrate:[],workers:[],blocks:[]};d in k[a].pools?(n.hashrate.push([h,k[a].pools[d].hashrate]),n.workers.push([h,k[a].pools[d].workerCount]),n.blocks.push([h,k[a].pools[d].blocks.pending])):(n.hashrate.push([h,0]),n.workers.push([h,0]),n.blocks.push([h,0]))}l=[];m=[];p=[];for(c in b)l.push({key:c.replace(/(^([a-zA-Zp{M}]))|([ -][a-zA-Zp{M}])/g, function(a){return a.toUpperCase()}),values:b[c].workers}),m.push({key:c.replace(/(^([a-zA-Zp{M}]))|([ -][a-zA-Zp{M}])/g,function(a){return a.toUpperCase()}),values:b[c].hashrate}),p.push({key:c.replace(/(^([a-zA-Zp{M}]))|([ -][a-zA-Zp{M}])/g,function(a){return a.toUpperCase()}),values:b[c].blocks})}function q(b){b=d3.time.format("%I:%M %p")(new Date(b));0===b.indexOf("0")&&(b=b.slice(1));return b} function r(){nv.addGraph(function(){t=nv.models.stackedAreaChart().margin({left:40,right:40}).x(function(b){return b[0]}).y(function(b){return b[1]}).useInteractiveGuideline(!0).clipEdge(!0);t.xAxis.tickFormat(q);t.yAxis.tickFormat(d3.format("d"));d3.select("#poolWorkers").datum(l).call(t);return t});nv.addGraph(function(){u=nv.models.lineChart().margin({left:60,right:40}).x(function(b){return b[0]}).y(function(b){return b[1]}).useInteractiveGuideline(!0);u.xAxis.tickFormat(q);u.yAxis.tickFormat(function(b){var a= -1;do b/=1024,a++;while(1024<b);return Math.round(b)+[" KH"," MH"," GH"," TH"," PH"][a]});d3.select("#poolHashrate").datum(m).call(u);return u});nv.addGraph(function(){v=nv.models.multiBarChart().x(function(b){return b[0]}).y(function(b){return b[1]});v.xAxis.tickFormat(q);v.yAxis.tickFormat(d3.format("d"));d3.select("#poolBlocks").datum(p).call(v);return v})}function w(){"stats"===x&&(t.update(),u.update(),v.update())} function y(b){var a='<div class="coinInfoData">Algorithm:</div>',c='<div class="coinInfoData">'+b.algo+"</div>",h;for(h in b.ports){var e="Low";switch(b.ports[h].diff){case 32:e="Med";break;case 256:e="High"}a+='<div class="coinInfoData">URL <span class="coinInfoSubtle">('+e+")</span>:</div>";c+='<div class="coinInfoData">stratum+tcp://'+b.host+":"+h+"</div>"}b.coin?$("#coinInfoUsername").text("Your "+b.coin.name.replace(/(^([a-zA-Zp{M}]))|([ -][a-zA-Zp{M}])/g,function(a){return a.toUpperCase()})+ " wallet address"):$("#coinInfoUsername").text("Your public key");$(".coinInfoData").remove();$("#coinInfoRowKeys").append(a);$("#coinInfoRowValues").append(c)}var l,m,p,t,u,v,k,g,x=location.pathname.substr(1)||"home"; $(function(){function b(a,b){var c="The Crypto Pools";switch(a){case "getting-started":c="Getting Started - "+c;break;case "stats":c="Graphs - "+c;break;case "tbs":c="Statistics - "+c;break;case "workers":c="Workers - "+c;break;case "api":c="API - "+c}b&&history.pushState({oldPage:location.pathname.slice(1)},c,"/"+a);document.title=c;$(".menu-selected").removeClass("menu-selected");$('a[href="/'+a+'"]').parent().addClass("menu-selected");$.get("/get-page",{id:a},function(c){$("main").html(c);"stats"=== a&&(f(),r());x=a||"home"},"html")}document.addEventListener("click",function(a){1===a.which&&$(a.target).hasClass("hamburger")&&history.pushState(null,document.title,location.pathname)},!0);document.addEventListener("click",function(a){if(1===a.which){var c=$(a.target);if(c.hasClass("hot-swapper"))return"undefined"===typeof history.state.oldPage&&($("amp-sidebar button.i-amphtml-screen-reader")[0].click(),history.forward()),c=c.attr("href").slice(1),b(c,!0),a.preventDefault(),a.stopPropagation(), !1}},!0);$(document).on("click","#coinGlowTrigger",function(a){a.preventDefault();$(".menuList").addClass("glow");setTimeout(function(){$(".menuList").removeClass("glow")},200);return!1}).on("click",".poolOption",function(a){a.preventDefault();y($(this).data("info"));$("#coinInfoBackground,#coinInfo").removeClass("hidden");$("#coinInfoBackground").addClass("display");return!1}).on("click","#coinInfoBackground,#coinInfoClose",function(a){a.preventDefault();$("#coinInfoBackground,#coinInfo").addClass("hidden"); $("#coinInfoBackground").removeClass("display");return!1});window.addEventListener("load",function(){setTimeout(function(){b(location.pathname.slice(1),!1);window.addEventListener("popstate",function(a){a.state&&a.state.oldPage&&b(a.state.oldPage,!1)})},0)});window.statsSource=new EventSource("/api/live_stats");window.statsSource.addEventListener("message",function(a){a=JSON.parse(a.data);for(algo in a.algos)$("#statsMiners"+algo).text(a.algos[algo].workers),$("#statsHashrate"+algo).text(a.algos[algo].hashrateString); for(var c in a.pools)$("#statsMiners"+c).text(a.pools[c].workerCount),$("#statsHashrate"+c).text(a.pools[c].hashrateString)});nv.utils.windowResize(w);$.getJSON("/api/pool_stats",function(a){k=a;"stats"===x&&(f(),r())});window.statsSource.addEventListener("message",function(a){a=JSON.parse(a.data);k.push(a);a:{for(c in a.pools)if(!g||-1===g.indexOf(c)){var c=!0;break a}c=!1}if(c||Object.keys(a.pools).length>g.length)"stats"===x&&(f(),r());else{c=1E3*a.time;for(var b=0;b<g.length;b++){for(var e=g[b], d=0;d<l.length;d++)if(l[d].key===e){l[d].values.shift();l[d].values.push([c,e in a.pools?a.pools[e].workerCount:0]);break}for(d=0;d<m.length;d++)if(m[d].key===e){m[d].values.shift();m[d].values.push([c,e in a.pools?a.pools[e].hashrate:0]);break}for(d=0;d<p.length;d++)if(p[d].key===e){p[d].values.shift();p[d].values.push([c,e in a.pools?a.pools[e].blocks.pending:0]);break}}w()}})});