Merge pull request #754 from nrpatten/dashboard-test

Dashboard test
This commit is contained in:
Sebastian Grewe 2013-10-23 05:20:36 -07:00
commit f0e39d9158
11 changed files with 266 additions and 69 deletions

View File

@ -47,14 +47,17 @@ $dNetworkHashrateAdjusted = $dNetworkHashrate / 1000 * $dNetworkHashrateModifier
// Worker information
$aWorkers = $worker->getWorkers($user_id, $interval);
// Coin price
$aPrice = $setting->getValue('price');
// Output JSON format
$data = array(
'raw' => array( 'personal' => array( 'hashrate' => $dPersonalHashrate ), 'pool' => array( 'hashrate' => $dPoolHashrate ), 'network' => array( 'hashrate' => $dNetworkHashrate / 1000 ) ),
'personal' => array (
'hashrate' => $dPersonalHashrateAdjusted, 'sharerate' => $dPersonalSharerate,
'shares' => array('valid' => $aUserRoundShares['valid'], 'invalid' => $aUserRoundShares['invalid']),
'balance' => $transaction->getBalance($user_id), 'estimates' => $aEstimates, 'workers' => $aWorkers),
'pool' => array( 'hashrate' => $dPoolHashrateAdjusted, 'shares' => $aRoundShares ),
'balance' => $transaction->getBalance($user_id), 'estimates' => $aEstimates, 'workers' => $aWorkers ),
'pool' => array( 'workers' => $worker->getCountAllActiveWorkers(), 'hashrate' => $dPoolHashrateAdjusted, 'shares' => $aRoundShares, 'price' => $aPrice ),
'network' => array( 'hashrate' => $dNetworkHashrateAdjusted, 'difficulty' => $dDifficulty, 'block' => $iBlock ),
);
echo $api->get_json($data);

View File

@ -0,0 +1,45 @@
<?php
// Make sure we are called from index.php
if (!defined('SECURITY')) die('Hacking attempt');
// Check if the API is activated
$api->isActive();
// Fetch RPC information
if ($bitcoin->can_connect() === true) {
$dNetworkHashrate = $bitcoin->getnetworkhashps();
$dDifficulty = $bitcoin->getdifficulty();
$iBlock = $bitcoin->getblockcount();
} else {
$dNetworkHashrate = 0;
$dDifficulty = 1;
$iBlock = 0;
}
// Some settings
if ( ! $interval = $setting->getValue('statistics_ajax_data_interval')) $interval = 300;
if ( ! $dPoolHashrateModifier = $setting->getValue('statistics_pool_hashrate_modifier') ) $dPoolHashrateModifier = 1;
if ( ! $dNetworkHashrateModifier = $setting->getValue('statistics_network_hashrate_modifier') ) $dNetworkHashrateModifier = 1;
// Fetch raw data
$statistics->setGetCache(false);
$dPoolHashrate = $statistics->getCurrentHashrate($interval);
if ($dPoolHashrate > $dNetworkHashrate) $dNetworkHashrate = $dPoolHashrate;
$statistics->setGetCache(true);
// Apply pool modifiers
$dPoolHashrateAdjusted = $dPoolHashrate * $dPoolHashrateModifier;
$dNetworkHashrateAdjusted = $dNetworkHashrate / 1000 * $dNetworkHashrateModifier;
// Output JSON format
$data = array(
'raw' => array( 'workers' => $worker->getCountAllActiveWorkers(), 'pool' => array( 'hashrate' => $dPoolHashrate ) ),
'pool' => array( 'workers' => $worker->getCountAllActiveWorkers(), 'hashrate' => $dPoolHashrateAdjusted ),
'network' => array( 'hashrate' => $dNetworkHashrateAdjusted, 'difficulty' => $dDifficulty, 'block' => $iBlock ),
);
echo $api->get_json($data);
// Supress master template
$supress_master = 1;
?>

View File

@ -1,9 +1,8 @@
{if $smarty.session.AUTHENTICATED|default}
{assign var=payout_system value=$GLOBAL.config.payout_system}
{include file="dashboard/overview.tpl"}
{include file="dashboard/round_data.tpl"}
{include file="dashboard/default_$payout_system.tpl"}
{include file="dashboard/account_data.tpl"}
{include file="dashboard/workers.tpl"}
{include file="dashboard/round_data.tpl"}
{include file="dashboard/account_data.tpl"}{include file="dashboard/workers.tpl"}
{include file="dashboard/js.tpl"}
{/if}

View File

@ -1,60 +1,73 @@
<article class="module width_quarter">
<header><h3>Dashboard</h3></header>
<header><h3>PPLNS Stats</h3></header>
<div class="module_content">
<table align="center" width="50%">
<table width="100%">
<tbody>
<tr>
<td><b>PPLNS Target</b></td>
<td>{$GLOBAL.pplns.target|number_format}</td>
<td id="b-pplns" class="right"></td>
</tr>
<tr>
<td colspan="2"><b><u>Your Stats</u></b></td>
</tr>
<tr>
<td><b>Hashrate</b></td>
<td class="right"><span id="b-hashrate"></span> {$GLOBAL.hashunits.pool}</td>
</tr>
<tr>
<td><b>Share Rate</b></td>
<td class="right"><span id="b-sharerate"></span> S/s</td>
</tr>
</tbody>
</table>
<table align="left" width="50%">
<tbody>
<tr>
<td colspan="2"><b><u>Round Shares</u></b> <span id='tt'><img src='{$PATH}/images/questionmark.png' height='15px' width='15px' title='Submitted shares since last found block (ie. round shares)'></span></td>
</tr>
<tr>
<td><b>Pool Valid</b></td>
<td class="right"><i>{$GLOBAL.roundshares.valid|number_format}</i></td>
<td id="b-pvalid" class="right"></td>
</tr>
<tr>
<td><b>Your Valid<b></td>
<td class="right"><i>{$GLOBAL.userdata.shares.valid|number_format}</i><font size='1px'></font></b></td>
<td id="b-yvalid" class="right"></td>
</tr>
<tr>
<td><b>Pool Invalid</b></td>
<td class="right"><i>{$GLOBAL.roundshares.invalid|number_format}</i>{if $GLOBAL.roundshares.valid > 0}<font size='1px'> ({($GLOBAL.roundshares.invalid / ($GLOBAL.roundshares.valid + $GLOBAL.roundshares.invalid) * 100)|number_format:"2"}%)</font>{/if}</td>
<td id="b-pivalid" class="right"></td>
</tr>
<tr>
<td><b>Your Invalid</b></td>
<td class="right"><i>{$GLOBAL.userdata.shares.invalid|number_format}</i>{if $GLOBAL.roundshares.valid > 0}<font size='1px'> ({($GLOBAL.userdata.shares.invalid / ($GLOBAL.roundshares.valid + $GLOBAL.roundshares.invalid) * 100)|number_format:"2"}%)</font>{/if}</td>
<td id="b-yivalid" class="right"></td>
</tr>
</tbody>
</table>
<table align="right" width="50%">
<tbody>
<tr>
<td colspan="2"><b><u>{$GLOBAL.config.currency} Round Estimate</u></b></td>
</tr>
<tr>
<td><b>Block</b></td>
<td class="right">{$GLOBAL.userdata.est_block|number_format:"3"}</td>
<td id="b-block" class="right"></td>
</tr>
<tr>
<td><b>Fees</b></td>
<td class="right">{$GLOBAL.userdata.est_fee|number_format:"3"}</td>
<td id="b-fee" class="right"></td>
</tr>
<tr>
<td><b>Donation</b></td>
<td class="right">{$GLOBAL.userdata.est_donation|number_format:"3"}</td>
<td id="b-donation" class="right"></td>
</tr>
<tr>
<td><b>Payout</b></td>
<td class="right">{$GLOBAL.userdata.est_payout|number_format:"3"}</td>
<td id="b-payout" class="right"></td>
</tr>
<tr>
<td colspan="2"><b><u>{$GLOBAL.config.currency} Info</u></b></td>
</tr>
<tr>
<td><b>Current Difficulty</b></td>
<td id="b-diff" class="right"></td>
</tr>
<tr>
<td><b>Current Block</b></td>
<td id="b-nblock" class="right"></td>
</tr>
</tbody>
</table>
</div>
</article>

View File

@ -1,39 +1,33 @@
<article class="module width_quarter">
<header><h3>Dashboard</h3></header>
<header><h3>PPS Stats</h3></header>
<div class="module_content">
<table width="50%" align="center">
<table width="100%">
<tbody>
<tr>
<td><b>PPS Value</b></td>
<td>{$GLOBAL.ppsvalue}</td>
</tr>
</tbody>
</table>
<table align="left" width="50%">
<tbody>
<tr><td colspan="2">&nbsp;</td></tr>
<tr>
<td colspan="2"><b><u>Round Shares</u></b> <span id='tt'><img src='{$PATH}/images/questionmark.png' height='15px' width='15px' title='Submitted shares since last found block (ie. round shares)'></span></td>
</tr>
<tr>
<td><b>Pool Valid</b></td>
<td class="right"><i>{$GLOBAL.roundshares.valid|number_format}</i></td>
<td id="b-pvalid" class="right"></td>
</tr>
<tr>
<td><b>Your Valid</b></td>
<td class="right"><i>{$GLOBAL.userdata.shares.valid|number_format}</i></td>
<td id="b-yvalid" class="right"></td>
</tr>
<tr>
<td><b>Pool Invalid</b></td>
<td class="right"><i>{$GLOBAL.roundshares.invalid|number_format}</i>{if $GLOBAL.roundshares.valid > 0}<font size='1px'> ({($GLOBAL.roundshares.invalid / ($GLOBAL.roundshares.valid + $GLOBAL.roundshares.invalid) * 100)|number_format:"2"}%)</font>{/if}</td>
<td id="b-pivalid" class="right"></td>
</tr>
<tr>
<td><b>Your Invalid</b></td>
<td class="right"><i>{$GLOBAL.userdata.shares.invalid|number_format}</i>{if $GLOBAL.roundshares.valid > 0}<font size='1px'> ({($GLOBAL.userdata.shares.invalid / ($GLOBAL.roundshares.valid + $GLOBAL.roundshares.invalid) * 100)|number_format:"2"}%)</font>{/if}</td>
<td id="b-yivalid class="right"></td>
</tr>
</tbody>
</table>
<table align="left" width="50%">
<tbody>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td colspan="2"><b><u>{$GLOBAL.config.currency} Estimates</u></b></td></tr>
<tr>
<td><b>in 24 hours</b></td>
@ -47,6 +41,19 @@
<td><b>in 14 days</b></td>
<td class="right">{($GLOBAL.userdata.sharerate * 14 * 24 * 60 * 60 * $GLOBAL.ppsvalue)|number_format:"8"}</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr>
<td colspan="2"><b><u>{$GLOBAL.config.currency} Info</u></b></td>
</tr>
<tr>
<td><b>Current Difficulty</b></td>
<td id="b-diff" class="right"></td>
</tr>
<tr>
<td><b>Current Block</b></td>
<td id="b-nblock" class="right"></td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</tbody>
</table>
</div>

View File

@ -1,49 +1,58 @@
<article class="module width_quarter">
<header><h3>Dashboard</h3></header>
<header><h3>Prop Stats</h3></header>
<div class="module_content">
<table align="left" width="50%">
<table width="100%">
<tbody>
<tr>
<td colspan="2"><b><u>Round Shares</u></b> <span id='tt'><img src='{$PATH}/images/questionmark.png' height='15px' width='15px' title='Submitted shares since last found block (ie. round shares)'></span></td>
</tr>
<tr>
<td><b>Pool Valid</b></td>
<td class="right"><i>{$GLOBAL.roundshares.valid|number_format}</i></td>
<td id="b-pvalid" class="right"></td>
</tr>
<tr>
<td><b>Your Valid<b></td>
<td class="right"><i>{$GLOBAL.userdata.shares.valid|number_format}</i><font size='1px'></font></b></td>
<td id="b-yvalid" class="right"></td>
</tr>
<tr>
<td><b>Pool Invalid</b></td>
<td class="right"><i>{$GLOBAL.roundshares.invalid|number_format}</i>{if $GLOBAL.roundshares.valid > 0}<font size='1px'> ({($GLOBAL.roundshares.invalid / ($GLOBAL.roundshares.valid + $GLOBAL.roundshares.invalid) * 100)|number_format:"2"}%)</font>{/if}</td>
<td id="b-pivalid" class="right"></td>
</tr>
<tr>
<td><b>Your Invalid</b></td>
<td class="right"><i>{$GLOBAL.userdata.shares.invalid|number_format}</i>{if $GLOBAL.roundshares.valid > 0}<font size='1px'> ({($GLOBAL.userdata.shares.invalid / ($GLOBAL.roundshares.valid + $GLOBAL.roundshares.invalid) * 100)|number_format:"2"}%)</font>{/if}</td>
<td id="b-yivalid" class="right"></td>
</tr>
</tbody>
</table>
<table align="right" width="50%">
<tbody>
<tr><td colspan="2">&nbsp;</td></tr>
<tr>
<td colspan="2"><b><u>{$GLOBAL.config.currency} Round Estimate</u></b></td>
</tr>
<tr>
<td><b>Block</b></td>
<td class="right">{$GLOBAL.userdata.est_block|number_format:"8"}</td>
<td id="b-block" class="right"></td>
</tr>
<tr>
<td><b>Fees</b></td>
<td class="right">{$GLOBAL.userdata.est_fee|number_format:"8"}</td>
<td id="b-fee" class="right"></td>
</tr>
<tr>
<td><b>Donation</b></td>
<td class="right">{$GLOBAL.userdata.est_donation|number_format:"8"}</td>
<td id="b-donation" class="right"></td>
</tr>
<tr>
<td><b>Payout</b></td>
<td class="right">{$GLOBAL.userdata.est_payout|number_format:"8"}</td>
<td id="b-payout" class="right"></td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr>
<td colspan="2"><b><u>{$GLOBAL.config.currency} Info</u></b></td>
</tr>
<tr>
<td><b>Current Difficulty</b></td>
<td id="b-diff" class="right"></td>
</tr>
<tr>
<td><b>Current Block</b></td>
<td id="b-nblock" class="right"></td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</tbody>

View File

@ -88,11 +88,11 @@ $(document).ready(function(){
// Helper to initilize gauges
function initGauges(data) {
g1 = new JustGage({id: "nethashrate", value: parseFloat(data.getdashboarddata.data.network.hashrate).toFixed(2), min: 0, max: Math.round(data.getdashboarddata.data.network.hashrate * 2), title: "Net Hashrate", label: "{/literal}{$GLOBAL.hashunits.network}{literal}"});
g2 = new JustGage({id: "poolhashrate", value: parseFloat(data.getdashboarddata.data.pool.hashrate).toFixed(2), min: 0, max: Math.round(data.getdashboarddata.data.pool.hashrate * 2), title: "Pool Hashrate", label: "{/literal}{$GLOBAL.hashunits.pool}{literal}"});
g3 = new JustGage({id: "hashrate", value: parseFloat(data.getdashboarddata.data.personal.hashrate).toFixed(2), min: 0, max: Math.round(data.getdashboarddata.data.personal.hashrate * 2), title: "Hashrate", label: "{/literal}{$GLOBAL.hashunits.personal}{literal}"});
g4 = new JustGage({id: "sharerate", value: parseFloat(data.getdashboarddata.data.personal.sharerate).toFixed(2), min: 0, max: Math.round(data.getdashboarddata.data.personal.sharerate * 2), title: "Sharerate", label: "shares/s"});
g5 = new JustGage({id: "querytime", value: parseFloat(data.getdashboarddata.runtime).toFixed(2), min: 0, max: Math.round(data.getdashboarddata.runtime * 3), title: "Querytime", label: "ms"});
g1 = new JustGage({id: "nethashrate", value: parseFloat(data.getdashboarddata.data.network.hashrate).toFixed(2), min: 0, max: Math.round(data.getdashboarddata.data.network.hashrate * 2), title: "Net Hashrate", gaugeColor: '#6f7a8a', valueFontColor: '#555', shadowOpacity : 0.8, shadowSize : 0, shadowVerticalOffset : 10, label: "{/literal}{$GLOBAL.hashunits.network}{literal}"});
g2 = new JustGage({id: "poolhashrate", value: parseFloat(data.getdashboarddata.data.pool.hashrate).toFixed(2), min: 0, max: Math.round(data.getdashboarddata.data.pool.hashrate * 4), title: "Pool Hashrate", gaugeColor: '#6f7a8a', valueFontColor: '#555', shadowOpacity : 0.8, shadowSize : 0, shadowVerticalOffset : 10, label: "{/literal}{$GLOBAL.hashunits.pool}{literal}"});
g3 = new JustGage({id: "hashrate", value: parseFloat(data.getdashboarddata.data.personal.hashrate).toFixed(2), min: 0, max: Math.round(data.getdashboarddata.data.personal.hashrate * 4), title: "Hashrate", gaugeColor: '#6f7a8a', valueFontColor: '#555', shadowOpacity : 0.8, shadowSize : 0, shadowVerticalOffset : 10, label: "{/literal}{$GLOBAL.hashunits.personal}{literal}"});
g4 = new JustGage({id: "sharerate", value: parseFloat(data.getdashboarddata.data.personal.sharerate).toFixed(2), min: 0, max: Math.round(data.getdashboarddata.data.personal.sharerate * 2), gaugeColor: '#6f7a8a', valueFontColor: '#555', shadowOpacity : 0.8, shadowSize : 0, shadowVerticalOffset : 10, title: "Sharerate", label: "shares/s"});
g5 = new JustGage({id: "querytime", value: parseFloat(data.getdashboarddata.runtime).toFixed(0), min: 0, max: Math.round(data.getdashboarddata.runtime * 100), gaugeColor: '#6f7a8a', valueFontColor: '#555', shadowOpacity : 0.8, shadowSize : 0, shadowVerticalOffset : 10, title: "Querytime", label: "ms"});
}
// Helper to refresh graphs
@ -101,7 +101,7 @@ $(document).ready(function(){
g2.refresh(parseFloat(data.getdashboarddata.data.pool.hashrate).toFixed(2));
g3.refresh(parseFloat(data.getdashboarddata.data.personal.hashrate).toFixed(2));
g4.refresh(parseFloat(data.getdashboarddata.data.personal.sharerate).toFixed(2));
g5.refresh(parseFloat(data.getdashboarddata.runtime).toFixed(2));
g5.refresh(parseFloat(data.getdashboarddata.runtime).toFixed(0));
if (storedPersonalHashrate.length > 20) { storedPersonalHashrate.shift(); }
if (storedPoolHashrate.length > 20) { storedPoolHashrate.shift(); }
if (storedPersonalSharerate.length > 20) { storedPersonalSharerate.shift(); }
@ -135,6 +135,21 @@ $(document).ready(function(){
function refreshStaticData(data) {
$('#b-confirmed').html(data.getdashboarddata.data.personal.balance.confirmed);
$('#b-unconfirmed').html(data.getdashboarddata.data.personal.balance.unconfirmed);
$('#b-price').html((parseFloat(data.getdashboarddata.data.pool.price).toFixed(4)));
$('#b-dworkers').html(data.getdashboarddata.data.pool.workers);
$('#b-hashrate').html((parseFloat(data.getdashboarddata.data.personal.hashrate).toFixed(2)));
$('#b-sharerate').html((parseFloat(data.getdashboarddata.data.personal.sharerate).toFixed(2)));
$('#b-yvalid').html(data.getdashboarddata.data.personal.shares.valid);
$('#b-yivalid').html(data.getdashboarddata.data.personal.shares.invalid);
$('#b-pvalid').html(data.getdashboarddata.data.pool.shares.valid);
$('#b-pivalid').html(data.getdashboarddata.data.pool.shares.invalid);
$('#b-diff').html(data.getdashboarddata.data.network.difficulty);
$('#b-nblock').html(data.getdashboarddata.data.network.block);
$('#b-payout').html((parseFloat(data.getdashboarddata.data.personal.estimates.payout).toFixed(4)));
$('#b-block').html((parseFloat(data.getdashboarddata.data.personal.estimates.block).toFixed(4)));
$('#b-fee').html((parseFloat(data.getdashboarddata.data.personal.estimates.fee).toFixed(4)));
$('#b-donation').html((parseFloat(data.getdashboarddata.data.personal.estimates.donation).toFixed(4)));
$('#b-pplns').html({/literal}{$GLOBAL.pplns.target}{literal});
}
// Refresh worker information

View File

@ -1,18 +1,20 @@
<article class="module width_full">
<header><h3>Overview</h3></header>
<article class="module module width_3_quarter">
<header><h3>Overview {if $GLOBAL.config.price.currency}{$GLOBAL.config.currency}/{$GLOBAL.config.price.currency}: <span id="b-price"></span>{/if} / Pool Workers: <span id="b-dworkers"></span></h3></header>
<div class="module_content">
<center>
<div style="display: inline-block;">
<div id="poolhashrate" style="width:100px; height:80px;"></div>
<div id="sharerate" style="width:100px; height:80px;"></div>
<div id="poolhashrate" style="width:120px; height:90px;"></div>
<div id="sharerate" style="width:120px; height:90px;"></div>
</div>
<div style="display: inline-block;">
<div id="hashrate" style="width:200px; height:160px;"></div>
<div id="hashrate" style="width:220px; height:180px;"></div>
</div>
<div style="display: inline-block;">
<div id="nethashrate" style="width:100px; height:80px;"></div>
<div id="querytime" style="width:100px; height:80px;"></div>
<div id="nethashrate" style="width:120px; height:90px;"></div>
<div id="querytime" style="width:120px; height:90px;"></div>
</div>
<div style="margin-left: 50px; display: inline-block; width: 70%;">
</center>
<div style="margin-left: 16px; display: inline-block; width: 100%;">
<div id="hashrategraph" style="height: 160px; width: 100%;"></div>
</div>
</div>

View File

@ -1,4 +1,4 @@
<article class="module width_quarter">
<article class="module width_3_quarter">
<header><h3>Round Information</h3></header>
<div class="module_content">
<div id="shareinfograph" style="width: 100%; height: 150px;"></div>

View File

@ -67,4 +67,21 @@
<li class="icon-mail"><a href="{$smarty.server.PHP_SELF}?page=support">Support</a></li>
{/if}
</ul>
<ul>
<hr/>
</ul>
{if $smarty.session.AUTHENTICATED|default:"0" == 1}
<br />
{else}
<ul>
<center>
<div style="display: inline-block;">
<i><u><b><font size="2">LIVE STATS</font></b></u></i>
<div id="mr" style="width:180px; height:120px;"></div>
<div id="hr" style="width:180px; height:120px;"></div>
</div>
</center>
</ul>
<hr/>
{include file="global/navjs.tpl"}
{/if}

View File

@ -0,0 +1,87 @@
<script>
{literal}
$(document).ready(function(){
var g1, g2;
// Ajax API URL
var url = "{/literal}{$smarty.server.PHP_SELF}?page=api&action=getnavbardata{literal}";
// Store our data globally
var storedHashrate=[];
var storedWorkers=[];
// Helper to initilize gauges
function initGauges(data) {
g1 = new JustGage({
id: "mr",
value: parseFloat(data.getnavbardata.data.pool.workers).toFixed(0),
min: 0,
max: Math.round(data.getnavbardata.data.pool.workers * 4),
title: "Miners",
gaugeColor: '#6f7a8a',
labelFontColor: '#555',
titleFontColor: '#555',
valueFontColor: '#555',
label: "Active Miners",
relativeGaugeSize: true,
showMinMax: true,
shadowOpacity : 0.8,
shadowSize : 0,
shadowVerticalOffset : 10
});
g2 = new JustGage({
id: "hr",
value: parseFloat(data.getnavbardata.data.pool.hashrate).toFixed(2),
min: 0,
max: Math.round(data.getnavbardata.data.pool.hashrate * 4),
title: "Pool Hasrate",
gaugeColor: '#6f7a8a',
labelFontColor: '#555',
titleFontColor: '#555',
valueFontColor: '#555',
label: "{/literal}{$GLOBAL.hashunits.pool}{literal}",
relativeGaugeSize: true,
showMinMax: true,
shadowOpacity : 0.8,
shadowSize : 0,
shadowVerticalOffset : 10
});
}
// Helper to refresh graphs
function refreshInformation(data) {
g1.refresh(parseFloat(data.getnavbardata.data.pool.workers).toFixed(0));
g2.refresh(parseFloat(data.getnavbardata.data.pool.hashrate).toFixed(2));
if (storedWorkers.length > 20) { storedWorkers.shift(); }
if (storedHashrate.length > 20) { storedHashrate.shift(); }
timeNow = new Date().getTime();
storedWorkers[storedWorkers.length] = [timeNow, data.getnavbardata.data.raw.pool.workers];
storedHashrate[storedHashrate.length] = [timeNow, data.getnavbardata.data.raw.pool.hashrate];
}
// Fetch initial data via Ajax, starts proper gauges to display
$.ajax({
url: url,
async: false, // Run all others requests after this only if it's done
dataType: 'json',
success: function (data) { initGauges(data); }
});
// Our worker process to keep gauges and graph updated
(function worker() {
$.ajax({
url: url,
dataType: 'json',
success: function(data) {
refreshInformation(data);
},
complete: function() {
setTimeout(worker, {/literal}{($GLOBAL.config.statistics_ajax_refresh_interval * 1000)|default:"1000"}{literal})
}
});
})();
});
{/literal}
</script>