//[Data Javascript] //Project: Responsive Pool Template //Should Be Included In All Pages. It Controls Data And Charts var WebURL = "https://example.org/"; var API = "https://example.org/api/"; var stratumAddress = "stratum+tcp://example.org"; var infoLink = "https://etcblockexplorer.com/block/"; var txLink = "https://etcblockexplorer.com/tx/"; var defaultPool = 'etc'; var currentPool = defaultPool; // Check browser compatibility var nua = navigator.userAgent; var is_IE = ((nua.indexOf('Mozilla/5.0') > -1 && nua.indexOf('Trident') > -1) && !(nua.indexOf('Chrome') > -1)); if (is_IE) { console.log('Running in IE browser is not supported - ', nua); } // General formatter function function _formatter(value, decimal, unit) { if (value === 0) { return "0 " + unit; } else { var si = [ { value: 1, symbol: "" }, { value: 1e3, symbol: "K" }, { value: 1e6, symbol: "M" }, { value: 1e9, symbol: "G" }, { value: 1e12, symbol: "T" }, { value: 1e15, symbol: "P" }, { value: 1e18, symbol: "E" }, { value: 1e21, symbol: "Z" }, { value: 1e24, symbol: "Y" } ]; for (var i = si.length - 1; i > 0; i--) { if (value >= si[i].value) { break; } } return ((value / si[i].value).toFixed(decimal).replace(/\.0+$|(\.[0-9]*[1-9])0+$/, "$1") + " " + si[i].symbol + unit); } } // Time convert Local -> UTC function convertLocalDateToUTCDate(date, toUTC) { date = new Date(date); var localOffset = date.getTimezoneOffset() * 60000; var localTime = date.getTime(); if (toUTC) { date = localTime + localOffset; } else { date = localTime - localOffset; } newDate = new Date(date); return newDate; } // Time convert UTC -> Local function convertUTCDateToLocalDate(date) { var newDate = new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000); var localOffset = date.getTimezoneOffset() / 60; var hours = date.getUTCHours(); newDate.setHours(hours - localOffset); return newDate; } // String convert -> Date function dateConvertor(date) { var options = { year: "numeric", month: "numeric", day: "numeric" }; var newDateFormat = new Date(date).toLocaleDateString("en-US", options); var newTimeFormat = new Date(date).toLocaleTimeString(); var dateAndTime = newDateFormat + ' ' + newTimeFormat return dateAndTime } // Converts seconds function readableSeconds(t) { var seconds = Math.round(t); var minutes = Math.floor(seconds / 60); var hours = Math.floor(minutes / 60); var days = Math.floor(hours / 24); if (days === Infinity) days = 0; hours = hours - (days * 24); if (isNaN(hours)) hours = 0; if (hours === Infinity) hours = 0; minutes = minutes - (days * 24 * 60) - (hours * 60); if (isNaN(minutes)) minutes = 0; if (minutes === Infinity) minutes = 0; seconds = seconds - (days * 24 * 60 * 60) - (hours * 60 * 60) - (minutes * 60); if (isNaN(seconds)) seconds = 0; if (seconds === Infinity) seconds = 0; if (days > 0) { return (days + "d " + hours + "h " + minutes + "m " + seconds + "s"); } if (hours > 0) { return (hours + "h " + minutes + "m " + seconds + "s"); } if (minutes > 0) { return (minutes + "m " + seconds + "s"); } return (seconds + "s"); } // Time different calculation function timeDiff(tstart, tend) { var diff = Math.floor((tend - tstart) / 1000), units = [ { d: 60, l: "s" }, { d: 60, l: "m" }, { d: 24, l: "h" }, { d: 7, l: "d" } ]; var s = ''; for (var i = 0; i < units.length; ++i) { s = (diff % units[i].d) + units[i].l + " " + s; diff = Math.floor(diff / units[i].d); } return s; } function timeDiffSec(tstart, tend) { var diff = Math.floor((tend - tstart) / 1000), units = [ { d: 60, l: " seconds" } ]; var s = ''; for (var i = 0; i < units.length; ++i) { s = (diff % units[i].d) + units[i].l + " " + s; diff = Math.floor(diff / units[i].d); } return s; } // Scroll to top of the page function scrollPageTop() { document.body.scrollTop = 0; document.documentElement.scrollTop = 0; var elmnt = document.getElementById("page-scroll-top"); elmnt.scrollIntoView(); } // Check if file exits function doesFileExist(urlToFile) { var xhr = new XMLHttpRequest(); xhr.open('HEAD', urlToFile, false); xhr.send(); if (xhr.status == "404") { return false; } else { return true; } } // Load Pool Stats Content function loadStatsPage() { setInterval( (function load() { loadStatsData(); loadSettingsData(); loadPoolHashrateChart(); loadPoolMinerChart(); loadPoolWorkerChart(); loadNetDiffChart(); loadNetHashChart(); loadStatsPrice(); loadStatsTicker(); return load; })(), 5000 ); } // Load Pool Stats Data function loadStatsData() { $.when( $.ajax(API + "stats").done(function (data) { $.each(data.nodes, function (index, value) { difficulty = value.difficulty; nethash = value.difficulty / value.blocktime; blocktime = value.blocktime; chainheight = value.height; }) }), $.ajax(API + "stats").done(function (data) { var lastBlockDateStats = convertLocalDateToUTCDate(new Date(data.stats.lastBlockFound * 1000), false); convertedBlockDateStats = dateConvertor(lastBlockDateStats); shares = data.stats.roundShares; poolhash = data.hashrate; miners = data.minersTotal; workers = data.totalWorkers; }) ) .then(function () { ttf = Math.round((nethash / poolhash) * blocktime); roundVariance = ((shares / difficulty) * 100).toFixed(2); roundShares = (shares / 1000000000).toFixed(2); $("#currentEffort").text(roundVariance + " %"); $("#currentShares").text(roundShares); $("#poolTTF").text(readableSeconds(ttf)); $("#poolHashrate").text(_formatter(poolhash, 3, "H/s")); $("#poolStatsHashrate").text(_formatter(poolhash, 3, "H/s")); $("#networkHashrate").text(_formatter(nethash, 3, "H/s")); $("#networkStatsHashrate").text(_formatter(nethash, 3, "H/s")); $("#poolMiners").text(miners + " Miner(s)"); $("#poolStatsMiners").text(miners + " Miner(s)"); $("#poolWorkers").text(workers + " Worker(s)"); $("#poolStatsWorkers").text(workers + " Worker(s)"); $("#netBlockTime").text(blocktime + " s"); $("#networkDifficulty").text(_formatter(difficulty, 3, "H/s")); $("#networkStatsDifficulty").text(_formatter(difficulty, 3, "H/s")); $("#blockchainHeight").text(chainheight); $("#lastBlockStats").text(convertedBlockDateStats); }); } // Load Pool Stats Settings function loadSettingsData() { return $.ajax(API + "stats").done(function (data) { hold = (data.PayoutThreshold / 1000000000).toFixed(2); fee = data.PoolFee; pay = data.PayoutInterval; $("#payoutSheme").text("PROP"); $("#poolFee").text(fee + " %"); $("#payInterval").text(pay); $("#minPayment").text(hold + " ETC"); }) .fail(function () { $.notify( { message: "Error: No response from API.
(loadSettingsData)" }, { type: "danger", timer: 3000 } ); }); } // Load Pool Stats Ticker function loadStatsTicker() { $.when( $.ajax(API + "stats").done(function (data) { hold = (data.PayoutThreshold / 1000000000).toFixed(2); fee = data.PoolFee; pay = data.PayoutInterval; }), $.ajax(API + "stats").done(function (data) { shares = data.stats.roundShares; poolhash = data.hashrate; miners = data.minersTotal; workers = data.totalWorkers; difficulty = data.nodes[0].difficulty; nethash = data.nodes[0].difficulty / data.nodes[0].blocktime; blocktime = data.nodes[0].blocktime; chainheight = data.nodes[0].height; }) ) .then(function () { $("#payoutShemeTicker").text("PROP"); $("#poolFeeTicker").text(fee + " %"); $("#payIntervalTicker").text(pay); $("#minPaymentTicker").text(hold + " ETC"); $("#poolHashrateTicker").text(_formatter(poolhash, 3, "H/s")); $("#networkHashrateTicker").text(_formatter(nethash, 3, "H/s")); $("#networkDifficultyTicker").text(_formatter(difficulty, 3, "H/s")); $("#poolMinersTicker").text(miners + " Miner(s)"); $("#poolWorkersTicker").text(workers + " Worker(s)"); $("#blockchainHeightTicker").text(chainheight); }); } // Load Pool Hashrate Charts function loadPoolHashrateChart() { return $.ajax(API + "stats").done(function (data) { labels = []; poolHashrate = []; $.each(data.poolCharts, function (index, value) { if (labels.length === 0 || (labels.length + 1) % 6 === 1) { var createDate = new Date(value.x * 1000); labels.push(createDate.getHours() + ":" + (createDate.getMinutes() < 10 ? '0' : '') + createDate.getMinutes()); } else { labels.push(""); } poolHashrate.push(value.y); }); var dataPoolHash = { labels: labels, series: [poolHashrate] }; var chartPoolhash = { height: "377px", showArea: true, showPoint: false, seriesBarDistance: 1, axisX: { showGrid: false }, fullWidth: true, chartPadding: { right: 10, left: -5, bottom: -10 }, axisY: { offset: 47, scale: "logcc", labelInterpolationFnc: function (value) { return _formatter(value, 1, "H/s"); } }, lineSmooth: Chartist.Interpolation.simple({ divisor: 2 }) }; var responsiveOptions = [["screen and (max-width: 640px)", { axisX: { labelInterpolationFnc: function (value) { return value[1]; } } }]]; Chartist.Line("#chartStatsPoolHashrate", dataPoolHash, chartPoolhash, responsiveOptions); }) } // Load Pool Miner Charts function loadPoolMinerChart() { return $.ajax(API + "stats").done(function (data) { labels = []; poolMiner = []; $.each(data.clientCharts, function (index, value) { if (labels.length === 0 || (labels.length + 1) % 6 === 1) { var createDate = new Date(value.x * 1000); labels.push(createDate.getHours() + ":" + (createDate.getMinutes() < 10 ? '0' : '') + createDate.getMinutes()); } else { labels.push(""); } poolMiner.push(value.y); }); var dataPoolMiner = { labels: labels, series: [poolMiner] }; var chartPoolMiner = { height: "125px", showArea: true, showPoint: false, seriesBarDistance: 1, axisX: { showGrid: false }, fullWidth: true, chartPadding: { right: 5, left: -5, bottom: -15 }, axisY: { offset: 47, scale: "logcc", labelInterpolationFnc: function (value) { return _formatter(value, 1, ""); } }, lineSmooth: Chartist.Interpolation.simple({ divisor: 2 }) }; var responsiveOptions = [["screen and (max-width: 640px)", { axisX: { labelInterpolationFnc: function (value) { return value[1]; } } }]]; Chartist.Line("#chartStatsPoolMiner", dataPoolMiner, chartPoolMiner, responsiveOptions); }) } // Load Pool Worker Charts function loadPoolWorkerChart() { return $.ajax(API + "stats").done(function (data) { labels = []; poolWorker = []; $.each(data.workerCharts, function (index, value) { if (labels.length === 0 || (labels.length + 1) % 6 === 1) { var createDate = new Date(value.x * 1000); labels.push(createDate.getHours() + ":" + (createDate.getMinutes() < 10 ? '0' : '') + createDate.getMinutes()); } else { labels.push(""); } poolWorker.push(value.y); }); var dataPoolWorker = { labels: labels, series: [poolWorker] }; var chartPoolWorker = { height: "125px", showArea: true, showPoint: false, seriesBarDistance: 1, axisX: { showGrid: false }, fullWidth: true, chartPadding: { right: 5, left: -5, bottom: -15 }, axisY: { offset: 47, scale: "logcc", labelInterpolationFnc: function (value) { return _formatter(value, 1, ""); } }, lineSmooth: Chartist.Interpolation.simple({ divisor: 2 }) }; var responsiveOptions = [["screen and (max-width: 640px)", { axisX: { labelInterpolationFnc: function (value) { return value[1]; } } }]]; Chartist.Line("#chartStatsPoolWorker", dataPoolWorker, chartPoolWorker, responsiveOptions); }) } // Load Net Difficulty Charts function loadNetDiffChart() { return $.ajax(API + "stats").done(function (data) { labels = []; netDiff = []; $.each(data.netCharts, function (index, value) { if (labels.length === 0 || (labels.length + 1) % 6 === 1) { var createDate = new Date(value.x * 1000); labels.push(createDate.getHours() + ":" + (createDate.getMinutes() < 10 ? '0' : '') + createDate.getMinutes()); } else { labels.push(""); } netDiff.push(value.y); }); var dataNetDiff = { labels: labels, series: [netDiff] }; var chartNetDiff = { height: "125px", showArea: true, showPoint: false, seriesBarDistance: 1, axisX: { showGrid: false }, fullWidth: true, chartPadding: { right: 5, left: -5, bottom: -15 }, axisY: { offset: 47, scale: "logcc", labelInterpolationFnc: function (value) { return _formatter(value, 1, "H/s"); } }, lineSmooth: Chartist.Interpolation.simple({ divisor: 2 }) }; var responsiveOptions = [["screen and (max-width: 640px)", { axisX: { labelInterpolationFnc: function (value) { return value[1]; } } }]]; Chartist.Line("#chartStatsNetDiff", dataNetDiff, chartNetDiff, responsiveOptions); }) } // Load Net Hashrate Charts function loadNetHashChart() { return $.ajax(API + "stats").done(function (data) { labels = []; netHash = []; var blockTime = data.nodes[0].blocktime; $.each(data.netCharts, function (index, value) { if (labels.length === 0 || (labels.length + 1) % 6 === 1) { var createDate = new Date(value.x * 1000); labels.push(createDate.getHours() + ":" + (createDate.getMinutes() < 10 ? '0' : '') + createDate.getMinutes()); } else { labels.push(""); } netHash.push(value.y / blockTime); }); var dataNetHash = { labels: labels, series: [netHash] }; var chartNetHash = { height: "125px", showArea: true, showPoint: false, seriesBarDistance: 1, axisX: { showGrid: false }, fullWidth: true, chartPadding: { right: 5, left: -5, bottom: -15 }, axisY: { offset: 47, scale: "logcc", labelInterpolationFnc: function (value) { return _formatter(value, 1, "H/s"); } }, lineSmooth: Chartist.Interpolation.simple({ divisor: 2 }) }; var responsiveOptions = [["screen and (max-width: 640px)", { axisX: { labelInterpolationFnc: function (value) { return value[1]; } } }]]; Chartist.Line("#chartStatsNetHash", dataNetHash, chartNetHash, responsiveOptions); }) } // Load Pool Stats Price function loadStatsPrice() { return $.ajax("https://api.coingecko.com/api/v3/coins/ethereum-classic").done(function (data) { coins = 2.500; price = (data.market_data.current_price.usd).toFixed(2); blockRewardUSD = (coins * price).toFixed(2); $("#etcToUSD").html("$ " + data.market_data.current_price.usd.toFixed(2)); $("#etcToBTC").html(data.market_data.current_price.btc.toFixed(8)); $("#priceHigh").html("$ " + data.market_data.high_24h.usd.toFixed(2)); $("#priceHighBTC").html(data.market_data.high_24h.btc.toFixed(8)); $("#priceLow").html("$ " + data.market_data.low_24h.usd.toFixed(2)); $("#priceLowBTC").html(data.market_data.low_24h.btc.toFixed(8)); $("#changeBTC").html(data.market_data.price_change_24h_in_currency.btc.toFixed(8)); $("#changeBTCPercent").html(data.market_data.price_change_percentage_24h_in_currency.btc.toFixed(2) + " %"); $("#marketCap").html(data.market_data.market_cap_rank); $("#genesisDate").html(data.genesis_date); $("#blockToUSD").html(blockRewardUSD + " $"); $("#lastBlockReward").html(coins + " ETC"); }); } // Load Pool Blocks Overview Content function loadBlocksOverviewPage() { setInterval( (function load() { loadBlocksPage(); loadImmaturePage(); loadAvgTotalPage(); loadluckPage(); return load; })(), 5000 ); } // Load Pool Blocks Content function loadBlocksPage() { return $.ajax(API + "blocks").done(function (data) { var blockList = ""; if (data.matured.length > 0) { $.each(data.matured, function (index, value) { var createDate = convertLocalDateToUTCDate(new Date(value.timestamp * 1000), false); convertedDate = dateConvertor(createDate); var effort = ((value.shares / value.difficulty) * 100).toFixed(2); var reward = (value.reward / 1000000000000000000).toFixed(4); var effortClass = ""; if (effort < 100) { effortClass = "effort1"; } else if (effort < 200) { effortClass = "effort2"; } else if (effort < 500) { effortClass = "effort3"; } else { effortClass = "effort4"; } blockList += ""; blockList += "" + convertedDate + ""; var blockart = value.uncle; if (value.uncle == false) { blockList += "Block"; } else if (value.uncle == true) { blockList += "Uncle"; } else { blockList += "" + blockart + ""; } blockList += "" + value.height + ""; blockList += "" + value.hash.substring(0, 8) + " … " + value.hash.substring(value.hash.length - 8) + ""; blockList += "" + _formatter(value.difficulty, 5, "H/s") + ""; blockList += "" + effort + "%"; var status = value.orphan; if (value.orphan == false) { blockList += "Confirmed"; } else if (value.orphan == true) { blockList += "Orphaned"; } else { blockList += "" + status + ""; } blockList += "" + reward + " ETC"; blockList += ""; }); } else { blockList += 'No Blocks Found Yet'; } $("#blockList").html(blockList); }) } // Load Pool Immature Content function loadImmaturePage() { $.when( $.ajax(API + "stats").done(function (data) { var lastBlockDate = convertLocalDateToUTCDate(new Date(data.stats.lastBlockFound * 1000), false); convertedBlockDate = dateConvertor(lastBlockDate); $.each(data.nodes, function (index, value) { chainheight = value.height; }); $("#lastBlock").html(convertedBlockDate); }), $.ajax(API + "blocks").done(function (data) { var immaList = ""; if (data.immature.length > 0) { $.each(data.immature, function (index, value) { var createDate = convertLocalDateToUTCDate(new Date(value.timestamp * 1000), false); convertedDate = dateConvertor(createDate); blockheight = value.height; var effort = ((value.shares / value.difficulty) * 100).toFixed(2); var reward = (value.reward / 1000000000000000000).toFixed(4); var confirm = chainheight - blockheight; var effortClass = ""; if (effort < 100) { effortClass = "effort1"; } else if (effort < 200) { effortClass = "effort2"; } else if (effort < 500) { effortClass = "effort3"; } else { effortClass = "effort4"; } var confclass = ""; if (confirm < 100) { confclass = confirm; } else { confclass = "100"; } immaList += ""; immaList += "" + convertedDate + ""; if (value.uncle = false) { immaList += "Block"; } else { immaList += "Pending"; } immaList += "" + value.height + ""; immaList += "" + value.hash.substring(0, 8) + " … " + value.hash.substring(value.hash.length - 8) + ""; immaList += "" + _formatter(value.difficulty, 5, "H/s") + ""; immaList += "" + effort + "%"; immaList += "" + reward + " ETC"; immaList += "
" + confclass + "% Completed
"; immaList += ""; }); } else { immaList += "No Immature Blocks Found"; } $("#immaList").html(immaList); }), ) } // Load Pool Average Total Content function loadAvgTotalPage() { return $.ajax(API + "blocks").done(function (data) { var total = 0; var totalCoin = 0; var luckListAll = ""; if (data.matured.length > 0) { $.each(data.matured, function (index, value) { total += parseFloat(value.shares / value.difficulty); totalCoin += parseFloat(value.reward); var avg = ((total * 100) / data.matured.length).toFixed(2); var effortClass = ""; if (avg < 100) { effortClass = "effort1"; } else if (avg < 200) { effortClass = "effort2"; } else if (avg < 500) { effortClass = "effort3"; } else { effortClass = "effort4"; } luckListAll = "" + avg + " %"; }); } var coins = (totalCoin / 1000000000000000000).toFixed(4); $("#avgLuckTotal").html(luckListAll); $("#totalBlocks").html(data.matured.length + " Blocks"); $("#totalCoins").html(coins + " ETC"); }) } // Load Pool Luck Content function loadluckPage() { return $.ajax(API + "blocks").done(function (data) { var imma = data.immatureTotal; $.each(data.luck, function (index, value) { uncle = value.uncleRate; }); $("#uncleRate").html(uncle + " %"); $("#immature").html(imma + " Blocks"); }) } // Load Pool Miners Content function loadTopMinersPage() { setInterval( (function load() { loadMinersPage(); return load; })(), 5000 ); } // Load Pool Miners function loadMinersPage() { return $.ajax(API + "miners").done(function (data) { var minerList = ""; if (data.miners) { var minerCount = 0; $.each(data.miners, function (index, value) { minerCount++; start = new Date(value.lastBeat).valueOf(); end = new Date().getTime(); lastShareDiff = timeDiffSec(start, end); minerList += ""; minerList += "" + minerCount + ""; minerList += "" + index + ""; minerList += "" + lastShareDiff + " ago"; minerList += "" + _formatter(value.hr, 5, "H/s") + ""; minerList += ""; }); } else { minerList += 'No Miner Connected'; } $("#minerList").html(minerList); }) } // Load Pool Dashboard Content function loadDashboardPage() { function render() { setInterval( (function load() { loadDashboardData($("#walletAddress").val()); loadDashboardWorkerList($("#walletAddress").val()); loadDashboardPaymentList($("#walletAddress").val()); loadDashboardChart($("#walletAddress").val()); loadMinerAddressPage($("#walletAddress").val()); return load; })(), 5000 ); } var walletQueryString = window.location.hash.split(/[#/?]/)[3]; if (walletQueryString) { var wallet = window.location.hash.split(/[#/?]/)[3].replace("address=", ""); if (wallet) { $(walletAddress).val(wallet); localStorage.setItem(currentPool + "-walletAddress", wallet); render(); } } if (localStorage[currentPool + "-walletAddress"]) { $("#walletAddress").val(localStorage[currentPool + "-walletAddress"]); } } // Load Pool Dashboard Wallet function loadWallet() { console.log('Loading wallet address:', $("#walletAddress").val()); if ($("#walletAddress").val().length > 0) { localStorage.setItem(currentPool + "-walletAddress", $("#walletAddress").val()); } var coin = window.location.hash.split(/[#/?]/)[1]; var currentPage = window.location.hash.split(/[#/?]/)[2] || "stats"; window.location.href = "#" + currentPool + "/" + currentPage + "?address=" + $("#walletAddress").val(); } // Load Pool Dashboard Data function loadDashboardData(walletAddress) { return $.ajax(API + "accounts/" + walletAddress).done(function (data) { coins = ((data.stats.paid + data.stats.balance) / 1000000000).toFixed(4); rshares = data.roundShares / 1000000000; pendsbal = (data.stats.balance / 1000000000).toFixed(8); $("#minerHashrate").text(_formatter(data.currentHashrate, 3, "H/s")); $("#pendingBalance").text(pendsbal + " ETC"); $("#lifetimeBalance").text(coins + " ETC"); $("#minerShares").text(rshares); $("#avgHash").text(_formatter(data.hashrate, 3, "H/s")); $("#blocksFound").text(data.stats.blocksFound); }) } // Load Pool Dashboard Worker function loadDashboardWorkerList(walletAddress) { return $.ajax(API + "accounts/" + walletAddress).done(function (data) { var workerList = ""; if (data.workers) { var workerCount = 0; $.each(data.workers, function (index, value) { workerCount++; start = new Date(value.lastBeat).valueOf(); end = new Date().getTime(); lastShareDiff = timeDiffSec(start, end); workerList += ""; workerList += "" + workerCount + ""; workerList += "" + index + ""; workerList += "" + _formatter(value.hr, 3, "H/s") + ""; workerList += "" + lastShareDiff + " ago"; workerList += ""; }); } else { workerList += 'No Worker Connected'; } $("#workerCount").text(workerCount); $("#workerList").html(workerList); }) } // Load Pool Dashboard Payment function loadDashboardPaymentList(walletAddress) { return $.ajax(API + "accounts/" + walletAddress).done(function (data) { var wpaymentList = ""; if (data.payments) { var wpaymentCount = 0; $.each(data.payments, function (index, value) { wpaymentCount++; var createDate = convertLocalDateToUTCDate(new Date(value.timestamp * 1000), false); convertedDate = dateConvertor(createDate); wtxid = value.tx; paid = (value.amount / 1000000000).toFixed(4); wpaymentList += ""; wpaymentList += "" + wpaymentCount + ""; wpaymentList += "" + convertedDate + ""; wpaymentList += "" + paid + " ETC"; wpaymentList += "" + wtxid.substring(0, 5) + " … " + wtxid.substring(wtxid.length - 5) + ""; wpaymentList += ""; }); } else { wpaymentList += 'No Payments Done'; } $("#wpaymentCount").html(wpaymentCount); $("#wpaymentList").html(wpaymentList); }) } // Load Pool Dashboard Chart function loadDashboardChart(walletAddress) { return $.ajax(API + "accounts/" + walletAddress).done(function (data) { labels = []; minerHashrate = []; $.each(data.minerCharts, function (index, value) { if (labels.length === 0 || (labels.length + 1) % 4 === 1) { var createDate = new Date(value.x * 1000); labels.push(createDate.getHours() + ":" + (createDate.getMinutes() < 10 ? '0' : '') + createDate.getMinutes()); } else { labels.push(""); } minerHashrate.push(value.minerHash); }); var data = { labels: labels, series: [minerHashrate] }; var options = { height: "300px", showArea: true, showPoint: false, seriesBarDistance: 1, axisX: { showGrid: false }, fullWidth: true, chartPadding: { right: 10, left: -5, bottom: -10, top: 10 }, axisY: { offset: 47, labelInterpolationFnc: function (value) { return _formatter(value, 1, "H/s"); } }, lineSmooth: Chartist.Interpolation.simple({ divisor: 2 }) }; var responsiveOptions = [["screen and (max-width: 640px)", { axisX: { labelInterpolationFnc: function (value) { return value[0]; } } }]]; Chartist.Line("#chartDashboardHashrate", data, options, responsiveOptions); }) } // Load Pool Miner Address function loadMinerAddressPage(walletAddress) { $.when( $.ajax(API + "accounts/" + walletAddress).done(function (data) { minershares = data.roundShares; minerhash = data.currentHashrate; }), $.ajax(API + "stats").done(function (data) { poolshares = data.stats.roundShares; poolhash = data.hashrate; creward = 2.5; }) ) .then(function () { var shareDominance = ((minershares * 100) / poolshares).toFixed(2); var hashDominance = ((minerhash * 100) / poolhash).toFixed(2); var avgpay = ((shareDominance / 100) * creward).toFixed(4); $("#minerPercent").html(hashDominance + " %"); $("#minerSharesDominance").html(shareDominance + " %"); $("#avgPayout").html(avgpay + " ETC"); }); } // Load Pool Payments Content function loadPaymentsOverviewPage() { setInterval( (function load() { loadPaymentsPage(); return load; })(), 5000 ); } // Load Pool Payments Page function loadPaymentsPage() { return $.ajax(API + "payments").done(function (data) { var paymentList = ""; $.each(data.payments, function (index, value) { var createDate = convertUTCDateToLocalDate(new Date(value.timestamp * 1000), false); convertedDate = dateConvertor(createDate); reward = (value.amount / 1000000000).toFixed(8); miner = value.address; txid = value.tx; paymentList += ""; paymentList += "" + convertedDate + ""; paymentList += "" + txid.substring(0, 8) + " … " + txid.substring(txid.length - 8) + ""; paymentList += "" + miner + ""; paymentList += "" + reward + " ETC"; paymentList += ""; }); $("#paymentList").html(paymentList); }) }