// config //var API = 'http://176.104.53.246:4080/api/'; // API address var API = 'https://rvn.ixbase.info/v.php?ix=pgApi&m='; var defaultPool = 'RVN'; // Default Pool ID var currentPool = defaultPool; // private 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; } } function loadPools(renderCallback) { $('#currentPool b').remove(); $('#currentPool ul').remove(); return $.ajax(API + 'pools') .done(function (data) { var poolList = ''; if (poolList.length > 0) { $('#poolList').append(poolList); } if (data.pools.length > 1) { $('#poolList li a').on('click', function (event) { currentPool = $(event.target).attr('data-id'); loadPools(renderCallback); }); } if (renderCallback.has()) { renderCallback.fire(); } }) .fail(function () { $.notify({ icon: "ti-cloud-down", message: "Error: No response from API.
(loadPools)", }, { type: 'danger', timer: 3000, }); }); } function loadStatsData() { return $.ajax(API + 'pools') .done(function (data) { $.each(data.pools, function (index, value) { if (currentPool === value.id) { var chares; // $.get('https://rvn.ixbase.info/v.php',{ix:'pgShares'} // ,function(data){document.getElementById('listShares').innerHTML=data; // }); // $.get('https://rvn.ixbase.info/v.php',{ix:'pgHash'} // ,function(data){document.getElementById('listHashR').innerHTML=data; // }); // $.get('https://rvn.ixbase.info/v.php',{ix:'pgCalc3'} // ,function(data){document.getElementById('pgCalc3').innerHTML=data; // }); // $('#poolShares').text(shares); // $('#poolBlocks').text(_formatter('value', 0, '')); // $('#poolMiners').text(_formatter(value.poolStats.connectedMiners, 0, '')); // $('#poolHashRateH').text(_formatter(value.poolStats.poolHashrate, 5, 'H/s')); // $('#poolHashRate').text(_formatter(value.poolStats.poolHashrate, 5, 'H/s')); // $('#networkHashRate').text(_formatter(value.networkStats.networkHashrate, 5, 'H/s')); // $('#networkDifficulty').text(_formatter(value.networkStats.networkDifficulty, 5, '')); } }); }) .fail(function () { $.notify({ icon: "ti-cloud-down", message: "Error: No response from API.
(loadStatsData)", }, { type: 'danger', timer: 3000, }); }); } function loadStatsChart() { return $.ajax(API + 'pools/' + currentPool + '/performance') .done(function (data) { labels = []; connectedMiners = []; networkHashRate = []; poolHashRate = []; $.each(data.stats, function (index, value) { if (labels.length === 0 || (labels.length + 1) % 4 === 1) { labels.push(new Date(value.created).toISOString().slice(11, 16)); } else { labels.push(''); } networkHashRate.push(value.networkHashrate); poolHashRate.push(value.poolHashrate); connectedMiners.push(value.connectedMiners); }); var data = { labels: labels, series: [ networkHashRate, poolHashRate, ], }; var options = { showArea: true, height: "245px", axisX: { showGrid: false, }, axisY: { offset: 47, 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[0]; } }, }], ]; Chartist.Line('#chartStatsHashRate', data, options, responsiveOptions); var data = { labels: labels, series: [ connectedMiners, ], }; var options = { height: "245px", axisX: { showGrid: false, }, lineSmooth: Chartist.Interpolation.simple({ divisor: 2, }), }; var responsiveOptions = [ ['screen and (max-width: 640px)', { axisX: { labelInterpolationFnc: function (value) { return value[0]; } }, }], ]; Chartist.Line('#chartStatsMiners', data, options, responsiveOptions); }) .fail(function () { $.notify({ icon: "ti-cloud-down", message: "Error: No response from API.
(loadStatsChart)", }, { type: 'danger', timer: 3000, }); }); } function loadDashboardData(walletAddress) { //$.get('https://rvn.ixbase.info/v.php',{ix:'pg-paidBalance'} //,function(data){document.getElementById('paidBalance').innerHTML=data; //}); $.get('https://rvn.ixbase.info/v.php',{ix:'pgVexpBalance'} ,function(data){document.getElementById('expBalance').innerHTML=data; }); return $.ajax(API + 'pools/' + currentPool + '/miners/' + walletAddress) .done(function (data) { $('#pendingShares').text(_formatter(data.pendingShares, 0, '')); var workerHashRate = 0; $.each(data.performance.workers, function (index, value) { workerHashRate += value.hashrate; }); $('#minerHashRate').text(_formatter(workerHashRate, 5, 'H/s')); $('#pendingBalance').text(_formatter(data.pendingBalance, 5, '')); $('#paidBalance').text(_formatter(data.totalPaid, 5, '')); $('#lifetimeBalance').text(_formatter(data.pendingBalance + data.totalPaid, 5, '')); }) .fail(function () { $.notify({ icon: "ti-cloud-down", message: "Error: No response from API.
(loadDashboardData)", }, { type: 'danger', timer: 3000, }); }); } function loadDashboardWorkerList(walletAddress) { return $.ajax(API + 'pools/' + currentPool + '/miners/' + walletAddress + '/performance') .done(function (data) { var workerList = 'NameHash RateShare Rate'; if (data.length > 0) { $.each(data[0].workers, function (index, value) { workerList += ''; if (index.length === 0) { workerList += 'Unnamed'; } else { workerList += '' + index + ''; } workerList += '' + _formatter(value.hashrate, 5, 'H/s') + ''; workerList += '' + _formatter(value.sharesPerSecond, 5, 'S/s') + ''; workerList += '' + data[0].created + ''; workerList += ''; }); } else { workerList += 'None'; } workerList += ''; $('#workerList').html(workerList); }) .fail(function () { $.notify({ icon: "ti-cloud-down", message: "Error: No response from API.
(loadDashboardWorkerList)", }, { type: 'danger', timer: 3000, }); }); } function loadDashboardChart(walletAddress) { return $.ajax(API + 'pools/' + currentPool + '/miners/' + walletAddress + '/performance') .done(function (data) { if (data.length > 0) { labels = []; minerHashRate = []; $.each(data, function (index, value) { if (labels.length === 0 || (labels.length + 1) % 4 === 1) { labels.push(new Date(value.created).toISOString().slice(11, 16)); } else { labels.push(''); } var workerHashRate = 0; $.each(value.workers, function (index2, value2) { workerHashRate += value2.hashrate; }); minerHashRate.push(workerHashRate); }); var data = { labels: labels, series: [ minerHashRate, ], }; var options = { showArea: true, height: "245px", axisX: { showGrid: false, }, axisY: { offset: 47, 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[0]; } }, }], ]; Chartist.Line('#chartDashboardHashRate', data, options, responsiveOptions); } }) .fail(function () { $.notify({ icon: "ti-cloud-down", message: "Error: No response from API.
(loadDashboardChart)", }, { type: 'danger', timer: 3000, }); }); } function loadMinersList() { return $.ajax(API + 'pools/' + currentPool + '/miners') .done(function (data) { var minerList = 'AddressHash RateShare Rate'; if (data.length > 0) { $.each(data, function (index, value) { minerList += ''; // minerList += '' + value.miner.substring(0, 12) + ' … ' + value.miner.substring(value.miner.length - 12) + ''; minerList += '' + value.miner.substring(0, 12) + ' … ' + value.miner.substring(value.miner.length - 12) + ''; // minerList += '' + value.miner.substring(0, 12) + ' … ' + value.miner.substring(value.miner.length - 12) + ''; minerList += '' + _formatter(value.hashrate, 5, 'H/s') + ''; minerList += '' + _formatter(value.sharesPerSecond, 5, 'S/s') + ''; minerList += ''; }); } else { minerList += 'None'; } minerList += ''; $('#minerList').html(minerList); }) .fail(function () { $.notify({ icon: "ti-cloud-down", message: "Error: No response from API.
(loadMinersList)", }, { type: 'danger', timer: 3000, }); }); } function loadBlocksList() { return $.ajax(API + 'pools/' + currentPool + '/blocks?pageSize=100') .done(function (data) { var blockList = 'Date & TimeHeightEffortStatusRewardConfirmation'; if (data.length > 0) { $.each(data, function (index, value) { blockList += ''; blockList += '' + new Date(value.created).toLocaleString() + ''; blockList += '' + value.blockHeight + ''; if (typeof(value.effort) !== "undefined") { blockList += '~' + Math.round(value.effort * 100) + '%'; } else { blockList += 'n/a'; } blockList += '' + value.status + ''; blockList += '' + _formatter(value.reward, 5, '') + ''; blockList += ''; blockList += '~' + Math.round(value.confirmationProgress * 100) + '%'; blockList += '
' + value.transactionConfirmationData.substring(0, 16) + ' … ' + value.transactionConfirmationData.substring(value.transactionConfirmationData.length - 16) + ' '; blockList += '' }); } else { blockList += 'None'; } blockList += ''; $('#blockList').html(blockList); }) .fail(function () { $.notify({ icon: "ti-cloud-down", message: "Error: No response from API.
(loadBlocksList)", }, { type: 'danger', timer: 3000, }); }); } function loadPaymentsList() { return $.ajax(API + 'pools/' + currentPool + '/payments?pageSize=500') .done(function (data) { var paymentList = 'Date & TimeAddressAmountConfirmation'; if (data.length > 0) { $.each(data, function (index, value) { paymentList += ''; paymentList += '' + new Date(value.created).toLocaleString() + ''; paymentList += '' + value.address.substring(0, 12) + ' … ' + value.address.substring(value.address.length - 12) + ''; paymentList += '' + _formatter(value.amount, 5, '') + ''; paymentList += ''; paymentList += '' + value.transactionConfirmationData.substring(0, 16) + ' … ' + value.transactionConfirmationData.substring(value.transactionConfirmationData.length - 16) + ' '; paymentList += ''; }); } else { paymentList += 'None'; } paymentList += ''; $('#paymentList').html(paymentList); }) .fail(function () { $.notify({ icon: "ti-cloud-down", message: "Error: No response from API.
(loadPaymentsList)", }, { type: 'danger', timer: 3000, }); }); } function loadConnectConfig() { return $.ajax(API + 'pools') .done(function (data) { var connectPoolConfig = 'ItemValue'; $.each(data.pools, function (index, value) { if (currentPool === value.id) { // connectPoolConfig += 'Algorithmkawpow, ' + value.coin.algorithm + ''; connectPoolConfig += 'Algorithmkawpow'; connectPoolConfig += 'Wallet Address' + value.address.substring(0, 12) + ' … ' + value.address.substring(value.address.length - 12) + ''; connectPoolConfig += 'Payout Scheme' + value.paymentProcessing.payoutScheme + ''; connectPoolConfig += 'Minimum Payment w/o #' + value.paymentProcessing.minimumPayment + ''; if (typeof(value.paymentProcessing.minimumPaymentToPaymentId) !== "undefined") { connectPoolConfig += 'Minimum Payment w/ #' + value.paymentProcessing.minimumPaymentToPaymentId + ''; } // connectPoolConfig += 'Pool Fee' + value.poolFeePercent + '%'; connectPoolConfig += 'Pool Fee0.5%'; $.each(value.ports, function (port, options) { connectPoolConfig += 'Port 3035 Difficulty'; if (typeof(options.varDiff) !== "undefined") { connectPoolConfig += 'Variable / ' + options.varDiff.minDiff + ' ↔ '; if (typeof(options.varDiff.maxDiff) === "undefined") { connectPoolConfig += '∞'; } else { connectPoolConfig += options.varDiff.maxDiff; } } else { connectPoolConfig += 'Static / ' + options.difficulty; } connectPoolConfig += ''; }); } }); connectPoolConfig += ''; $('#connectPoolConfig').html(connectPoolConfig); }) .fail(function () { $.notify({ icon: "ti-cloud-down", message: "Error: No response from API.
(loadConnectConfig)", }, { type: 'danger', timer: 3000, }); }); }