From 2a1e0ab39021dbc4d8a68b945695f3094941c328 Mon Sep 17 00:00:00 2001 From: nrpatten Date: Wed, 23 Oct 2013 06:11:03 -0400 Subject: [PATCH 1/3] New Dashboard Layout --- cronjobs/run-crons.sh | 2 +- .../pages/api/getdashboarddata.inc.php | 7 +- .../include/pages/api/getnavbardata.inc.php | 45 ++++++++++ public/templates/mpos/dashboard/default.tpl | 5 +- .../mpos/dashboard/default_pplns.tpl | 53 ++++++----- .../templates/mpos/dashboard/default_pps.tpl | 35 +++++--- .../templates/mpos/dashboard/default_prop.tpl | 37 +++++--- public/templates/mpos/dashboard/js.tpl | 27 ++++-- public/templates/mpos/dashboard/overview.tpl | 18 ++-- .../templates/mpos/dashboard/round_data.tpl | 2 +- public/templates/mpos/global/navigation.tpl | 19 +++- public/templates/mpos/global/navjs.tpl | 87 +++++++++++++++++++ 12 files changed, 267 insertions(+), 70 deletions(-) create mode 100644 public/include/pages/api/getnavbardata.inc.php create mode 100644 public/templates/mpos/global/navjs.tpl diff --git a/cronjobs/run-crons.sh b/cronjobs/run-crons.sh index c4877c8f..2136a4d3 100755 --- a/cronjobs/run-crons.sh +++ b/cronjobs/run-crons.sh @@ -7,7 +7,7 @@ # # ######################### # PHP Detections, if this fails hard code it -PHP_BIN=$( which php ) +PHP_BIN="/usr/bin/php-cli" # List of cruns to execute CRONS="findblock.php proportional_payout.php pplns_payout.php pps_payout.php blockupdate.php manual_payout.php auto_payout.php tickerupdate.php notifications.php statistics.php archive_cleanup.php" diff --git a/public/include/pages/api/getdashboarddata.inc.php b/public/include/pages/api/getdashboarddata.inc.php index b0accee1..9aa2adfd 100644 --- a/public/include/pages/api/getdashboarddata.inc.php +++ b/public/include/pages/api/getdashboarddata.inc.php @@ -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); diff --git a/public/include/pages/api/getnavbardata.inc.php b/public/include/pages/api/getnavbardata.inc.php new file mode 100644 index 00000000..6e05797a --- /dev/null +++ b/public/include/pages/api/getnavbardata.inc.php @@ -0,0 +1,45 @@ +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; +?> diff --git a/public/templates/mpos/dashboard/default.tpl b/public/templates/mpos/dashboard/default.tpl index d2ac6e8e..2bcf48bb 100644 --- a/public/templates/mpos/dashboard/default.tpl +++ b/public/templates/mpos/dashboard/default.tpl @@ -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} diff --git a/public/templates/mpos/dashboard/default_pplns.tpl b/public/templates/mpos/dashboard/default_pplns.tpl index d47ea946..a4ca9061 100644 --- a/public/templates/mpos/dashboard/default_pplns.tpl +++ b/public/templates/mpos/dashboard/default_pplns.tpl @@ -1,60 +1,73 @@
-

Dashboard

+

PPLNS Stats

- +
- + + + + + + + + + + + + - -
PPLNS Target{$GLOBAL.pplns.target|number_format}
Your Stats
Hashrate MH/s
Share Rate S/s
- - - + - + - + - + - -
Round Shares
Pool Valid{$GLOBAL.roundshares.valid|number_format}
Your Valid{$GLOBAL.userdata.shares.valid|number_format}
Pool Invalid{$GLOBAL.roundshares.invalid|number_format}{if $GLOBAL.roundshares.valid > 0} ({($GLOBAL.roundshares.invalid / ($GLOBAL.roundshares.valid + $GLOBAL.roundshares.invalid) * 100)|number_format:"2"}%){/if}
Your Invalid{$GLOBAL.userdata.shares.invalid|number_format}{if $GLOBAL.roundshares.valid > 0} ({($GLOBAL.userdata.shares.invalid / ($GLOBAL.roundshares.valid + $GLOBAL.roundshares.invalid) * 100)|number_format:"2"}%){/if}
- - - + - + - + - + + + + + + + + + + + +
{$GLOBAL.config.currency} Round Estimate
Block{$GLOBAL.userdata.est_block|number_format:"3"}
Fees{$GLOBAL.userdata.est_fee|number_format:"3"}
Donation{$GLOBAL.userdata.est_donation|number_format:"3"}
Payout{$GLOBAL.userdata.est_payout|number_format:"3"}
{$GLOBAL.config.currency} Info
Current Difficulty
Current Block
- diff --git a/public/templates/mpos/dashboard/default_pps.tpl b/public/templates/mpos/dashboard/default_pps.tpl index 7223765d..cc083753 100644 --- a/public/templates/mpos/dashboard/default_pps.tpl +++ b/public/templates/mpos/dashboard/default_pps.tpl @@ -1,39 +1,33 @@
-

Dashboard

+

PPS Stats

- +
- -
PPS Value {$GLOBAL.ppsvalue}
- - + - + - + - + - + - -
 
Round Shares
Pool Valid{$GLOBAL.roundshares.valid|number_format}
Your Valid{$GLOBAL.userdata.shares.valid|number_format}
Pool Invalid{$GLOBAL.roundshares.invalid|number_format}{if $GLOBAL.roundshares.valid > 0} ({($GLOBAL.roundshares.invalid / ($GLOBAL.roundshares.valid + $GLOBAL.roundshares.invalid) * 100)|number_format:"2"}%){/if}
Your Invalid{$GLOBAL.userdata.shares.invalid|number_format}{if $GLOBAL.roundshares.valid > 0} ({($GLOBAL.userdata.shares.invalid / ($GLOBAL.roundshares.valid + $GLOBAL.roundshares.invalid) * 100)|number_format:"2"}%){/if}
- - + @@ -47,6 +41,19 @@ + + + + + + + + + + + + +
 
{$GLOBAL.config.currency} Estimates
in 24 hoursin 14 days {($GLOBAL.userdata.sharerate * 14 * 24 * 60 * 60 * $GLOBAL.ppsvalue)|number_format:"8"}
 
{$GLOBAL.config.currency} Info
Current Difficulty
Current Block
 
diff --git a/public/templates/mpos/dashboard/default_prop.tpl b/public/templates/mpos/dashboard/default_prop.tpl index 3b299e77..dfeb5e80 100644 --- a/public/templates/mpos/dashboard/default_prop.tpl +++ b/public/templates/mpos/dashboard/default_prop.tpl @@ -1,49 +1,58 @@
-

Dashboard

+

Prop Stats

- +
- + - + - + - + - -
Round Shares
Pool Valid{$GLOBAL.roundshares.valid|number_format}
Your Valid{$GLOBAL.userdata.shares.valid|number_format}
Pool Invalid{$GLOBAL.roundshares.invalid|number_format}{if $GLOBAL.roundshares.valid > 0} ({($GLOBAL.roundshares.invalid / ($GLOBAL.roundshares.valid + $GLOBAL.roundshares.invalid) * 100)|number_format:"2"}%){/if}
Your Invalid{$GLOBAL.userdata.shares.invalid|number_format}{if $GLOBAL.roundshares.valid > 0} ({($GLOBAL.userdata.shares.invalid / ($GLOBAL.roundshares.valid + $GLOBAL.roundshares.invalid) * 100)|number_format:"2"}%){/if}
- - + - + - + - + - + + + + + + + + + + + + + diff --git a/public/templates/mpos/dashboard/js.tpl b/public/templates/mpos/dashboard/js.tpl index be5aeb52..c53a4cec 100644 --- a/public/templates/mpos/dashboard/js.tpl +++ b/public/templates/mpos/dashboard/js.tpl @@ -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 diff --git a/public/templates/mpos/dashboard/overview.tpl b/public/templates/mpos/dashboard/overview.tpl index 96b741e2..61b76021 100644 --- a/public/templates/mpos/dashboard/overview.tpl +++ b/public/templates/mpos/dashboard/overview.tpl @@ -1,18 +1,20 @@ -
-

Overview

+
+

Overview {if $GLOBAL.config.price.currency}{$GLOBAL.config.currency}/{$GLOBAL.config.price.currency}: {/if} / Pool Workers:

+
-
-
+
+
-
+
-
-
+
+
-
+
+
diff --git a/public/templates/mpos/dashboard/round_data.tpl b/public/templates/mpos/dashboard/round_data.tpl index 8c503e83..88a5961b 100644 --- a/public/templates/mpos/dashboard/round_data.tpl +++ b/public/templates/mpos/dashboard/round_data.tpl @@ -1,4 +1,4 @@ -
+

Round Information

diff --git a/public/templates/mpos/global/navigation.tpl b/public/templates/mpos/global/navigation.tpl index 8c39e75f..af922939 100644 --- a/public/templates/mpos/global/navigation.tpl +++ b/public/templates/mpos/global/navigation.tpl @@ -67,4 +67,21 @@
  • Support
  • {/if} - +
      +
      +
    + {if $smarty.session.AUTHENTICATED|default:"0" == 1} +
    + {else} +
      +
      +
      + LIVE STATS +
      +
      +
      +
      +
    +
    + {include file="global/navjs.tpl"} + {/if} diff --git a/public/templates/mpos/global/navjs.tpl b/public/templates/mpos/global/navjs.tpl new file mode 100644 index 00000000..ff89aee0 --- /dev/null +++ b/public/templates/mpos/global/navjs.tpl @@ -0,0 +1,87 @@ + From e51e32ac09897c27107569282952afc6234feae9 Mon Sep 17 00:00:00 2001 From: nrpatten Date: Wed, 23 Oct 2013 21:14:51 +1100 Subject: [PATCH 2/3] Update run-crons.sh --- cronjobs/run-crons.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cronjobs/run-crons.sh b/cronjobs/run-crons.sh index 2136a4d3..c4877c8f 100755 --- a/cronjobs/run-crons.sh +++ b/cronjobs/run-crons.sh @@ -7,7 +7,7 @@ # # ######################### # PHP Detections, if this fails hard code it -PHP_BIN="/usr/bin/php-cli" +PHP_BIN=$( which php ) # List of cruns to execute CRONS="findblock.php proportional_payout.php pplns_payout.php pps_payout.php blockupdate.php manual_payout.php auto_payout.php tickerupdate.php notifications.php statistics.php archive_cleanup.php" From dab792736d5ff4655b3664d071d93b283e389605 Mon Sep 17 00:00:00 2001 From: nrpatten Date: Wed, 23 Oct 2013 22:22:59 +1100 Subject: [PATCH 3/3] Update default_pplns.tpl add GLOBAL.hashunits.pool for hashrate. --- public/templates/mpos/dashboard/default_pplns.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/templates/mpos/dashboard/default_pplns.tpl b/public/templates/mpos/dashboard/default_pplns.tpl index a4ca9061..85471660 100644 --- a/public/templates/mpos/dashboard/default_pplns.tpl +++ b/public/templates/mpos/dashboard/default_pplns.tpl @@ -12,7 +12,7 @@
    - +
     
    {$GLOBAL.config.currency} Round Estimate
    Block{$GLOBAL.userdata.est_block|number_format:"8"}
    Fees{$GLOBAL.userdata.est_fee|number_format:"8"}
    Donation{$GLOBAL.userdata.est_donation|number_format:"8"}
    Payout{$GLOBAL.userdata.est_payout|number_format:"8"}
     
    {$GLOBAL.config.currency} Info
    Current Difficulty
    Current Block
     
    Hashrate MH/s {$GLOBAL.hashunits.pool}
    Share Rate