website with merged support

This commit is contained in:
XMR Miners Club
2021-01-03 23:51:09 -05:00
parent 2c8a1f909c
commit b6afc709a3
89 changed files with 7358 additions and 8587 deletions

View File

@@ -5,11 +5,11 @@
</div>
<script id="siblingTabTemplate" type="text/x-handlebars-template">
<li id="UserListTabs{{coin}} role="presentation" class="{{active}}"><a href="#{{coin}}">{{coin}} {{symbol}}</a></li>
<li id="UserListTabs{{coin}} role="presentation" class="{{active}}"><a href="#{{coin}}">{{coin}} {{symbol}}</a></li>
</script>
<script id="siblingTemplate" type="text/x-handlebars-template">
<div role="tabpanel" class="tab-pane {{active}}" id="{{coin}}">
<div role="tabpanel" class="tab-pane {{active}}" id="{{coin}}">
<h3>Users List (<span id="totalUsers">{{totalUsers}}</span> users)</h3>
<!-- Users list -->
<div class="card">
@@ -44,110 +44,88 @@
</script>
<script>
function parseUsers (stats, wallets, active) {
var totalUsers = 0;
var walletsArray = [];
var properObject = {};
function parseUsers(stats, wallets, active) {
var totalUsers = 0;
var walletsArray = [];
var properObject = {};
for (var wallet in wallets) {
if (wallets.hasOwnProperty(wallet)) {
var userData = wallets[wallet];
walletsArray.push({
coin: stats.config.coin,
miner: wallet,
childWallet: userData.childWallet,
wallet: userData,
timeago: $.timeago(new Date(userData.lastShare * 1000)
.toISOString()),
readablePending: getReadableCoin(stats, userData.pending, null, true),
readablePaid: getReadableCoin(stats, userData.paid, null, true),
readableHashrate: getReadableHashRateString(userData.hashrate) + '/s',
readableHashes: getReadableHashRateString(userData.hashes)
});
totalUsers++;
}
}
properObject['totalUsers'] = totalUsers
for(var wallet in wallets) {
if(wallets.hasOwnProperty(wallet)) {
var userData = wallets[wallet];
walletsArray.push({
coin: stats.config.coin,
miner: wallet,
childWallet: userData.childWallet,
wallet: userData,
timeago: $.timeago(new Date(userData.lastShare * 1000).toISOString()),
readablePending: getReadableCoin(stats, userData.pending, null, true),
readablePaid: getReadableCoin(stats, userData.paid, null, true),
readableHashrate: getReadableHashRateString(userData.hashrate) + '/s',
readableHashes: getReadableHashRateString(userData.hashes)
});
totalUsers++;
}
}
properObject['totalUsers'] = totalUsers
properObject['users'] = walletsArray.sort(function(a, b) {
return a.wallet.hashrate - b.wallet.hashrate
}).reverse();
properObject['coin'] = stats.config.coin
properObject['active'] = active
return properObject;
}
function createUserTable(promptPassword, api, parentStats, otherStats, active) {
var password = docCookies.getItem('password');
if(!password || promptPassword) {
password = prompt('Enter admin password');
}
$.ajax({
url: `${api}/admin_users`,
data: {password: password, otherCoin: otherStats.config.coin},
dataType: 'json',
cache: false,
success: function(data) {
docCookies.setItem('password', password, Infinity);
renderTemplate(parseUsers(parentStats, data, active), '#siblingTemplate', '#tab-content');
$('[data-toggle="tooltip"]').tooltip();
$('.usersList th.sort').on('click', sortTable);
},
error: function(e) {
docCookies.removeItem('password');
}
});
}
function Setup() {
let template = $('#siblingTabTemplate').html();
Mustache.parse(template)
let rendered = Mustache.render(template, {coin:lastStats.config.coin, symbol:`(${lastStats.config.symbol})`, active:'active'});
$('#UserListTabs').append(rendered)
createUserTable(null, api, lastStats, lastStats, 'active');
Object.keys(mergedStats).forEach(key => {
template = $('#siblingTabTemplate').html();
Mustache.parse(template)
rendered = Mustache.render(template, {coin:key, symbol:`(${mergedStats[key].config.symbol})`});
$('#UserListTabs').append(rendered)
createUserTable(null, mergedApis[key].api, mergedStats[key], lastStats);
})
sortElementList($(`#UserListTabs`), $(`#UserListTabs>li`), mergedStats)
properObject['users'] = walletsArray.sort(function (a, b) {
return a.wallet.hashrate - b.wallet.hashrate
})
.reverse();
properObject['coin'] = stats.config.coin
properObject['active'] = active
return properObject;
}
function createUserTable (promptPassword, api, parentStats, otherStats, active) {
var password = docCookies.getItem('password');
if (!password || promptPassword) {
password = prompt('Enter admin password');
}
$.ajax({
url: `${api}/admin_users`,
data: {
password: password,
otherCoin: otherStats.config.coin
},
dataType: 'json',
cache: false,
success: function (data) {
docCookies.setItem('password', password, Infinity);
renderTemplate(parseUsers(parentStats, data, active), '#siblingTemplate', '#tab-content');
$('[data-toggle="tooltip"]')
.tooltip();
$('.usersList th.sort')
.on('click', sortTable);
},
error: function (e) {
docCookies.removeItem('password');
}
});
}
function Setup () {
let template = $('#siblingTabTemplate')
.html();
Mustache.parse(template)
let rendered = Mustache.render(template, {
coin: lastStats.config.coin,
symbol: `(${lastStats.config.symbol})`,
active: 'active'
});
$('#UserListTabs')
.append(rendered)
createUserTable(null, api, lastStats, lastStats, 'active');
Object.keys(mergedStats)
.forEach(key => {
template = $('#siblingTabTemplate')
.html();
Mustache.parse(template)
rendered = Mustache.render(template, {
coin: key,
symbol: `(${mergedStats[key].config.symbol})`
});
$('#UserListTabs')
.append(rendered)
createUserTable(null, mergedApis[key].api, mergedStats[key], lastStats);
})
sortElementList($(`#UserListTabs`), $(`#UserListTabs>li`), mergedStats)
$('#UserListTabs a')
.click(function (e) {
e.preventDefault()
$(this)
.tab('show')
})
}
$(function () {
Setup()
});
$('#UserListTabs a').click(function (e) {
e.preventDefault()
$(this).tab('show')
})
}
$(function() {
Setup()
});
</script>