commit
f0e39d9158
@ -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);
|
||||
|
||||
45
public/include/pages/api/getnavbardata.inc.php
Normal file
45
public/include/pages/api/getnavbardata.inc.php
Normal 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;
|
||||
?>
|
||||
@ -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}
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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"> </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"> </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"> </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"> </td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@ -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"> </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"> </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"> </td></tr>
|
||||
</tbody>
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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}
|
||||
|
||||
87
public/templates/mpos/global/navjs.tpl
Normal file
87
public/templates/mpos/global/navjs.tpl
Normal 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>
|
||||
Loading…
Reference in New Issue
Block a user