Skip to content

Commit b877016

Browse files
committed
Merge pull request #2289 from MPOS/fix-lowdiff
[UPDATE] First attemp to fix low diff shares
2 parents 7f73e1d + 8311e91 commit b877016

File tree

8 files changed

+49
-37
lines changed

8 files changed

+49
-37
lines changed

include/classes/coins/coin_base.class.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,23 @@ class CoinBase extends Base {
1212
// Our coins target bits
1313
protected $target_bits = NULL;
1414

15+
// Our coins share difficulty precision
16+
protected $share_difficulty_precision = 0;
17+
1518
/**
1619
* Read our target bits
1720
**/
1821
public function getTargetBits() {
1922
return $this->target_bits;
2023
}
2124

25+
/**
26+
* Read our share difficulty precision
27+
**/
28+
public function getShareDifficultyPrecision() {
29+
return $this->share_difficulty_precision;
30+
}
31+
2232
/**
2333
* Calculate the PPS value for this coin
2434
* WARNING: Get this wrong and you will over- or underpay your miners!

include/classes/coins/coin_x11.class.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
**/
99
class Coin extends CoinBase {
1010
protected $target_bits = 24;
11+
protected $share_difficulty_precision = 4;
1112
}
1213

1314
?>

include/classes/statistics.class.php

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -45,37 +45,37 @@ function getLastBlocksbyTime() {
4545
IFNULL(SUM(IF(confirmations > 0, 1, 0)), 0) AS TotalValid,
4646
IFNULL(SUM(IF(confirmations = -1, 1, 0)), 0) AS TotalOrphan,
4747
IFNULL(SUM(IF(confirmations > 0, difficulty, 0)), 0) AS TotalDifficulty,
48-
IFNULL(ROUND(SUM(IF(confirmations > -1, shares, 0))), 0) AS TotalShares,
48+
IFNULL(SUM(IF(confirmations > -1, shares, 0)), 0) AS TotalShares,
4949
IFNULL(SUM(IF(confirmations > -1, amount, 0)), 0) AS TotalAmount,
5050
IFNULL(SUM(IF(FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 3600 SECOND), 1, 0)), 0) AS 1HourTotal,
5151
IFNULL(SUM(IF(confirmations > 0 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 3600 SECOND), 1, 0)), 0) AS 1HourValid,
5252
IFNULL(SUM(IF(confirmations = -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 3600 SECOND), 1, 0)), 0) AS 1HourOrphan,
5353
IFNULL(SUM(IF(confirmations > 0 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 3600 SECOND), difficulty, 0)), 0) AS 1HourDifficulty,
54-
IFNULL(ROUND(SUM(IF(confirmations > -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 3600 SECOND), shares, 0))), 0) AS 1HourShares,
54+
IFNULL(SUM(IF(confirmations > -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 3600 SECOND), shares, 0)), 0) AS 1HourShares,
5555
IFNULL(SUM(IF(confirmations > -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 3600 SECOND), amount, 0)), 0) AS 1HourAmount,
5656
IFNULL(SUM(IF(FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 86400 SECOND), 1, 0)), 0) AS 24HourTotal,
5757
IFNULL(SUM(IF(confirmations > 0 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 86400 SECOND), 1, 0)), 0) AS 24HourValid,
5858
IFNULL(SUM(IF(confirmations = -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 86400 SECOND), 1, 0)), 0) AS 24HourOrphan,
5959
IFNULL(SUM(IF(confirmations > 0 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 86400 SECOND), difficulty, 0)), 0) AS 24HourDifficulty,
60-
IFNULL(ROUND(SUM(IF(confirmations > -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 86400 SECOND), shares, 0))), 0) AS 24HourShares,
60+
IFNULL(SUM(IF(confirmations > -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 86400 SECOND), shares, 0)), 0) AS 24HourShares,
6161
IFNULL(SUM(IF(confirmations > -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 86400 SECOND), amount, 0)), 0) AS 24HourAmount,
6262
IFNULL(SUM(IF(FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 604800 SECOND), 1, 0)), 0) AS 7DaysTotal,
6363
IFNULL(SUM(IF(confirmations > 0 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 604800 SECOND), 1, 0)), 0) AS 7DaysValid,
6464
IFNULL(SUM(IF(confirmations = -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 604800 SECOND), 1, 0)), 0) AS 7DaysOrphan,
6565
IFNULL(SUM(IF(confirmations > 0 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 604800 SECOND), difficulty, 0)), 0) AS 7DaysDifficulty,
66-
IFNULL(ROUND(SUM(IF(confirmations > -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 604800 SECOND), shares, 0))), 0) AS 7DaysShares,
66+
IFNULL(SUM(IF(confirmations > -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 604800 SECOND), shares, 0)), 0) AS 7DaysShares,
6767
IFNULL(SUM(IF(confirmations > -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 604800 SECOND), amount, 0)), 0) AS 7DaysAmount,
6868
IFNULL(SUM(IF(FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 2419200 SECOND), 1, 0)), 0) AS 4WeeksTotal,
6969
IFNULL(SUM(IF(confirmations > 0 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 2419200 SECOND), 1, 0)), 0) AS 4WeeksValid,
7070
IFNULL(SUM(IF(confirmations = -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 2419200 SECOND), 1, 0)), 0) AS 4WeeksOrphan,
7171
IFNULL(SUM(IF(confirmations > 0 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 2419200 SECOND), difficulty, 0)), 0) AS 4WeeksDifficulty,
72-
IFNULL(ROUND(SUM(IF(confirmations > -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 2419200 SECOND), shares, 0))), 0) AS 4WeeksShares,
72+
IFNULL(SUM(IF(confirmations > -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 2419200 SECOND), shares, 0)), 0) AS 4WeeksShares,
7373
IFNULL(SUM(IF(confirmations > -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 2419200 SECOND), amount, 0)), 0) AS 4WeeksAmount,
7474
IFNULL(SUM(IF(FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 29030400 SECOND), 1, 0)), 0) AS 12MonthTotal,
7575
IFNULL(SUM(IF(confirmations > 0 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 29030400 SECOND), 1, 0)), 0) AS 12MonthValid,
7676
IFNULL(SUM(IF(confirmations = -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 29030400 SECOND), 1, 0)), 0) AS 12MonthOrphan,
7777
IFNULL(SUM(IF(confirmations > 0 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 29030400 SECOND), difficulty, 0)), 0) AS 12MonthDifficulty,
78-
IFNULL(ROUND(SUM(IF(confirmations > -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 29030400 SECOND), shares, 0))), 0) AS 12MonthShares,
78+
IFNULL(SUM(IF(confirmations > -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 29030400 SECOND), shares, 0)), 0) AS 12MonthShares,
7979
IFNULL(SUM(IF(confirmations > -1 AND FROM_UNIXTIME(time) >= DATE_SUB(now(), INTERVAL 29030400 SECOND), amount, 0)), 0) AS 12MonthAmount
8080
FROM " . $this->block->getTableName());
8181
if ($this->checkStmt($stmt) && $stmt->execute() && $result = $stmt->get_result()) {
@@ -104,7 +104,7 @@ public function getBlocksFound($limit=10) {
104104
b.*,
105105
a.username AS finder,
106106
a.is_anonymous AS is_anonymous,
107-
ROUND(difficulty * POW(2, 32 - " . $this->coin->getTargetBits() . "), 0) AS estshares
107+
ROUND(difficulty * POW(2, 32 - " . $this->coin->getTargetBits() . "), 0), 4) AS estshares
108108
FROM " . $this->block->getTableName() . " AS b
109109
LEFT JOIN " . $this->user->getTableName() . " AS a
110110
ON b.account_id = a.id
@@ -127,7 +127,7 @@ public function getBlocksFoundHeight($iHeight=0, $limit=10) {
127127
b.*,
128128
a.username AS finder,
129129
a.is_anonymous AS is_anonymous,
130-
ROUND(difficulty * POW(2, 32 - " . $this->coin->getTargetBits() . "), 0) AS estshares
130+
ROUND(difficulty * POW(2, 32 - " . $this->coin->getTargetBits() . "), 4) AS estshares
131131
FROM " . $this->block->getTableName() . " AS b
132132
LEFT JOIN " . $this->user->getTableName() . " AS a
133133
ON b.account_id = a.id
@@ -163,7 +163,7 @@ public function getBlocksSolvedbyAccount($limit=25) {
163163
return $this->memcache->setCache(__FUNCTION__ . $limit, $result->fetch_all(MYSQLI_ASSOC), 5);
164164
return $this->sqlError();
165165
}
166-
166+
167167
/**
168168
* Get SUM of blocks found and generated Coins for each worker
169169
* @param limit int Last limit blocks
@@ -185,7 +185,7 @@ public function getBlocksSolvedbyWorker($account_id, $limit=25) {
185185
return $this->memcache->setCache(__FUNCTION__ . $account_id . $limit, $result->fetch_all(MYSQLI_ASSOC), 5);
186186
return $this->sqlError();
187187
}
188-
188+
189189
/**
190190
* Currently the only function writing to the database
191191
* Stored per block user statistics of valid and invalid shares
@@ -293,8 +293,8 @@ public function getRoundShares() {
293293
}
294294
$stmt = $this->mysqli->prepare("
295295
SELECT
296-
ROUND(IFNULL(SUM(IF(our_result='Y', IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty), 0)), 0), 0) AS valid,
297-
ROUND(IFNULL(SUM(IF(our_result='N', IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty), 0)), 0), 0) AS invalid
296+
IFNULL(SUM(IF(our_result='Y', IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty), 0)), 0) AS valid,
297+
IFNULL(SUM(IF(our_result='N', IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty), 0)), 0) AS invalid
298298
FROM " . $this->share->getTableName() . "
299299
WHERE UNIX_TIMESTAMP(time) > IFNULL((SELECT MAX(time) FROM " . $this->block->getTableName() . "), 0)");
300300
if ( $this->checkStmt($stmt) && $stmt->execute() && $result = $stmt->get_result() )
@@ -316,8 +316,8 @@ public function getAllUserShares() {
316316
}
317317
$stmt = $this->mysqli->prepare("
318318
SELECT
319-
ROUND(IFNULL(SUM(IF(our_result='Y', IF(s.difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty), 0)), 0), 0) AS valid,
320-
ROUND(IFNULL(SUM(IF(our_result='N', IF(s.difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty), 0)), 0), 0) AS invalid,
319+
IFNULL(SUM(IF(our_result='Y', IF(s.difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty), 0)), 0) AS valid,
320+
IFNULL(SUM(IF(our_result='N', IF(s.difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty), 0)), 0) AS invalid,
321321
u.id AS id,
322322
u.donate_percent AS donate_percent,
323323
u.is_anonymous AS is_anonymous,
@@ -368,11 +368,11 @@ public function getUserShares($username, $account_id=NULL) {
368368
if ($data = $this->memcache->get(__FUNCTION__ . $account_id)) return $data;
369369
$stmt = $this->mysqli->prepare("
370370
SELECT
371-
ROUND(IFNULL(SUM(IF(our_result='Y', IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty), 0)), 0), 0) AS valid,
372-
ROUND(IFNULL(SUM(IF(our_result='N', IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty), 0)), 0), 0) AS invalid
371+
IFNULL(SUM(IF(our_result='Y', IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty), 0)), 0) AS valid,
372+
IFNULL(SUM(IF(our_result='N', IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty), 0)), 0) AS invalid
373373
FROM " . $this->share->getTableName() . "
374374
WHERE username LIKE ?
375-
AND UNIX_TIMESTAMP(time) >IFNULL((SELECT MAX(b.time) FROM " . $this->block->getTableName() . " AS b),0)");
375+
AND UNIX_TIMESTAMP(time) >IFNULL((SELECT MAX(b.time) FROM " . $this->block->getTableName() . " AS b),0)");
376376
$username = $username . ".%";
377377
if ($stmt && $stmt->bind_param("s", $username) && $stmt->execute() && $result = $stmt->get_result())
378378
return $this->memcache->setCache(__FUNCTION__ . $account_id, $result->fetch_assoc());
@@ -500,7 +500,7 @@ public function getUserUnpaidPPSShares($username, $account_id=NULL, $last_paid_p
500500
if ($this->getGetCache() && $data = $this->memcache->get(__FUNCTION__ . $account_id)) return $data;
501501
$stmt = $this->mysqli->prepare("
502502
SELECT
503-
ROUND(IFNULL(SUM(IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty)), 0), 0) AS total
503+
IFNULL(SUM(IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty)), 0) AS total
504504
FROM " . $this->share->getTableName() . "
505505
WHERE username LIKE ?
506506
AND id > ?
@@ -603,7 +603,7 @@ public function getTopContributors($type='shares', $limit=15) {
603603
a.username AS account,
604604
a.donate_percent AS donate_percent,
605605
a.is_anonymous AS is_anonymous,
606-
ROUND(IFNULL(SUM(IF(s.difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty)), 0), 0) AS shares
606+
IFNULL(SUM(IF(s.difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty)), 0) AS shares
607607
FROM " . $this->share->getTableName() . " AS s
608608
LEFT JOIN " . $this->user->getTableName() . " AS a
609609
ON SUBSTRING_INDEX( s.username, '.', 1 ) = a.username
@@ -744,7 +744,7 @@ public function getUserEstimates($value1, $value2, $dDonate, $bNoFees, $ppsvalue
744744
if ($this->config['payout_system'] != 'pps') {
745745
if (@$value1['valid'] > 0 && @$value2['valid'] > 0) {
746746
$this->config['reward_type'] == 'fixed' ? $reward = $this->config['reward'] : $reward = $this->block->getAverageAmount();
747-
$aEstimates['block'] = round(( (int)$value2['valid'] / (int)$value1['valid'] ) * (float)$reward, 8);
747+
$aEstimates['block'] = round(( (float)$value2['valid'] / (float)$value1['valid'] ) * (float)$reward, 8);
748748
$bNoFees == 0 ? $aEstimates['fee'] = round(((float)$this->config['fees'] / 100) * (float)$aEstimates['block'], 8) : $aEstimates['fee'] = 0;
749749
$aEstimates['donation'] = round((( (float)$dDonate / 100) * ((float)$aEstimates['block'] - (float)$aEstimates['fee'])), 8);
750750
$aEstimates['payout'] = round((float)$aEstimates['block'] - (float)$aEstimates['donation'] - (float)$aEstimates['fee'], 8);
@@ -789,7 +789,7 @@ public function getPoolStatsHours($hour=24) {
789789
SELECT
790790
IFNULL(COUNT(id), 0) as count,
791791
IFNULL(AVG(difficulty), 0) as average,
792-
IFNULL(ROUND(SUM(shares)), 0) as shares,
792+
IFNULL(SUM(shares), 0) as shares,
793793
IFNULL(SUM(amount), 0) as rewards
794794
FROM " . $this->block->getTableName() . "
795795
WHERE FROM_UNIXTIME(time) > DATE_SUB(now(), INTERVAL ? HOUR)

include/smarty_globals.inc.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
'coinaddresscheck' => $config['check_valid_coinaddress'],
6767
'csrf' => $config['csrf'],
6868
'config' => array(
69+
'sharediffprecision' => $coin->getShareDifficultyPrecision(),
6970
'date' => $setting->getValue('system_date_format', '%m/%d/%Y %H:%M:%S'),
7071
'website_design' => $setting->getValue('website_design'),
7172
'poolnav_enabled' => $setting->getValue('poolnav_enabled'),

templates/bootstrap/dashboard/js/api.tpl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,15 +108,15 @@ $(document).ready(function(){
108108
$('#b-nethashrate').html('n/a');
109109
}
110110
$('#b-sharerate').html((parseFloat(data.getdashboarddata.data.personal.sharerate).toFixed(2)));
111-
$('#b-yvalid').html(number_format(data.getdashboarddata.data.personal.shares.valid));
112-
$('#b-yivalid').html(number_format(data.getdashboarddata.data.personal.shares.invalid));
111+
$('#b-yvalid').html(number_format(data.getdashboarddata.data.personal.shares.valid, {/literal}{$GLOBAL.config.sharediffprecision}{literal}));
112+
$('#b-yivalid').html(number_format(data.getdashboarddata.data.personal.shares.invalid, {/literal}{$GLOBAL.config.sharediffprecision}{literal}));
113113
if ( data.getdashboarddata.data.personal.shares.valid > 0 ) {
114114
$('#b-yefficiency').html(number_format(100 - data.getdashboarddata.data.personal.shares.invalid_percent, 2) + "%");
115115
} else {
116116
$('#b-yefficiency').html(number_format(0, 2) + "%");
117117
}
118-
$('#b-pvalid').html(number_format(data.getdashboarddata.data.pool.shares.valid));
119-
$('#b-pivalid').html(number_format(data.getdashboarddata.data.pool.shares.invalid));
118+
$('#b-pvalid').html(number_format(data.getdashboarddata.data.pool.shares.valid, {/literal}{$GLOBAL.config.sharediffprecision}{literal}));
119+
$('#b-pivalid').html(number_format(data.getdashboarddata.data.pool.shares.invalid, {/literal}{$GLOBAL.config.sharediffprecision}{literal}));
120120
if ( data.getdashboarddata.data.pool.shares.valid > 0 ) {
121121
$('#b-pefficiency').html(number_format(100 - data.getdashboarddata.data.pool.shares.invalid_percent, 2) + "%");
122122
} else {

templates/bootstrap/dashboard/round_statistics/pplns/shares.tpl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,25 @@
99
<th><h5><i class="fa fa-smile-o fa-fw"></i> Valid</h5></th>
1010
<th>
1111
<div class="progress progress-striped progress-fix">
12-
<div id="b-yvalid" class="progress-bar progress-bar-success black" style="width: 100%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="{$GLOBAL.userdata.shares.valid|number_format}" role="progressbar">{$GLOBAL.userdata.shares.valid|number_format}</div>
12+
<div id="b-yvalid" class="progress-bar progress-bar-success black" style="width: 100%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="{$GLOBAL.userdata.shares.valid|number_format}" role="progressbar">{$GLOBAL.userdata.shares.valid|number_format:$GLOBAL.config.sharediffprecision}</div>
1313
</div>
1414
</th>
1515
<th>
1616
<div class="progress progress-striped progress-fix">
17-
<div id="b-pvalid" class="progress-bar progress-bar-success black" style="width: 100%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="{$GLOBAL.roundshares.valid|number_format}" role="progressbar">{$GLOBAL.roundshares.valid|number_format}</div>
17+
<div id="b-pvalid" class="progress-bar progress-bar-success black" style="width: 100%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="{$GLOBAL.roundshares.valid|number_format}" role="progressbar">{$GLOBAL.roundshares.valid|number_format:$GLOBAL.config.sharediffprecision}</div>
1818
</div>
1919
</th>
2020
</tr>
2121
<tr>
2222
<th><h5><i class="fa fa-frown-o fa-fw"></i> Invalid</h5></th>
2323
<th>
2424
<div class="progress progress-striped progress-fix">
25-
<div id="b-yivalid" class="progress-bar progress-bar-danger black" style="width: 100%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="{$GLOBAL.userdata.shares.invalid|number_format}" role="progressbar">{$GLOBAL.userdata.shares.invalid|number_format}</div>
25+
<div id="b-yivalid" class="progress-bar progress-bar-danger black" style="width: 100%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="{$GLOBAL.userdata.shares.invalid|number_format}" role="progressbar">{$GLOBAL.userdata.shares.invalid|number_format:$GLOBAL.config.sharediffprecision}</div>
2626
</div>
2727
</th>
2828
<th>
2929
<div class="progress progress-striped progress-fix">
30-
<div id="b-pivalid" class="progress-bar progress-bar-danger black" style="width: 100%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="{$GLOBAL.roundshares.invalid|number_format}" role="progressbar">{$GLOBAL.roundshares.invalid|number_format}</div>
30+
<div id="b-pivalid" class="progress-bar progress-bar-danger black" style="width: 100%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="{$GLOBAL.roundshares.invalid|number_format}" role="progressbar">{$GLOBAL.roundshares.invalid|number_format:$GLOBAL.config.sharediffprecision}</div>
3131
</div>
3232
</th>
3333
</tr>

0 commit comments

Comments
 (0)