website with merged support
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user