// 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 = 'Name | Hash Rate | Share 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 = 'Address | Hash Rate | Share 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 & Time | Height | Effort | Status | Reward |
---|
| Confirmation |
';
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 & Time | Address | Amount |
---|
| Confirmation |
';
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 = 'Item | Value |
';
$.each(data.pools, function (index, value) {
if (currentPool === value.id) {
// connectPoolConfig += 'Algorithm | kawpow, ' + value.coin.algorithm + ' |
';
connectPoolConfig += 'Algorithm | kawpow |
';
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 Fee | 0.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,
});
});
}