Example #1
0
function dopsperf($data, $user)
{
    global $fld_sep, $val_sep;
    $cols = array('#0000c0');
    $nc = count($cols);
    $datacols = $cols[0];
    $ans = getPShiftData($user);
    $iCrap = strpos($_SERVER['HTTP_USER_AGENT'], 'iP');
    if ($iCrap) {
        $vlines = false;
    } else {
        $vlines = true;
    }
    $pg = '<h1>Pool Shift Reward Performance</h1><br>';
    if ($ans['STATUS'] == 'ok' and $ans['DATA'] != '') {
        addGBase();
        addTips();
        $cbx = array('skey' => 'shift key', 'slines' => 'shift lines', 'tkey' => 'time key', 'tlines' => 'time lines', 'over' => 'key overlap', 'smooth' => 'smooth', 'zerob' => 'zero based', 'utc' => 'utc');
        $xon = array('skey' => 1, 'utc' => 1);
        if ($vlines === true) {
            $xon['slines'] = 1;
        }
        $pg .= "<div>";
        foreach ($cbx as $nam => $txt) {
            $pg .= ' <span class=nb>';
            $pg .= "<input type=checkbox id={$nam} onclick='gact(this)'>";
            $pg .= "{$txt}&nbsp;</span>";
        }
        $pg .= '</div>';
        $pg .= '<div id=can0><canvas id=can width=1 height=1>';
        $pg .= 'A graph will show here if your browser supports html5/canvas';
        $pg .= "</canvas></div>\n";
        $data = str_replace(array("\\", "'"), array("\\\\", "\\'"), $ans['DATA']);
        $data .= $fld_sep . 'cols' . $val_sep . $datacols;
        $pg .= "<script type='text/javascript'>\n";
        $pg .= pspg($nc);
        $pg .= "\nfunction godrw(f){var cbx=[";
        $comma = '';
        foreach ($cbx as $nam => $txt) {
            $pg .= "{$comma}'{$nam}'";
            $comma = ',';
        }
        $pg .= '];if(f){var xon={};';
        foreach ($xon as $nam => $val) {
            $pg .= "xon['{$nam}']=1;";
        }
        $pg .= "doinit(cbx,xon)}dodrw('{$data}',cbx)};godrw(1);</script>\n";
    }
    return $pg;
}
Example #2
0
function dousperf($data, $user)
{
    global $fld_sep, $val_sep;
    // This also defines how many worker fields there are
    $cols = array('#0000c0', '#00dd00', '#e06020', '#b020e0');
    $nc = count($cols);
    $workers = 'all';
    if (isset($_COOKIE['workers'])) {
        $w = substr(trim($_COOKIE['workers']), 0, 1024);
        if ($w !== false) {
            $wa = explode(',', $w, $nc + 1);
            if (count($wa) > $nc) {
                $w = '';
                for ($i = 0; $i < $nc; $i++) {
                    $w .= ($i == 0 ? '' : ',') . $wa[$i];
                }
            }
            $workers = $w;
        }
    }
    $ans = getShiftData($user, $workers);
    $iCrap = strpos($_SERVER['HTTP_USER_AGENT'], 'iP');
    if ($iCrap) {
        $vlines = false;
    } else {
        $vlines = true;
    }
    $pg = '<h1>User Shift Reward Performance</h1><br>';
    if ($ans['STATUS'] == 'ok' and $ans['DATA'] != '') {
        addGBase();
        addTips();
        $cbx = array('skey' => 'shift key', 'slines' => 'shift lines', 'tkey' => 'time key', 'tlines' => 'time lines', 'over' => 'key overlap', 'smooth' => 'smooth', 'zerob' => 'zero based', 'utc' => 'utc');
        $xon = array('skey' => 1, 'utc' => 1);
        if ($vlines === true) {
            $xon['slines'] = 1;
        }
        $pg .= '<form>';
        $tt = "<ul class=tip><li>all = all workers</li><li>noname = worker with no workername</li>";
        $tt .= "<li>or full workername without the username i.e. .worker or _worker</li>";
        $tt .= "<li>add a '*' on the end to match multiple workers e.g. .S3*</li></ul>";
        $pg .= "<span class=q onclick='tip(\"wtip\",6000)'>?</span>";
        $pg .= "<span class=tip0><span class=notip id=wtip>{$tt}</span></span>";
        $i = 0;
        $datacols = '';
        $onch = " onchange='wch()'";
        foreach ($cols as $col) {
            $i++;
            $pg .= " <span class=nb><font color={$col}>Worker{$i}";
            $pg .= "<input type=checkbox id=lin{$i} checked onclick='godrw(0)'>:</font>";
            $pg .= "<input type=text size=10 id=worker{$i}{$onch}> </span>";
            if ($i > 1) {
                $datacols .= ',';
            }
            $datacols .= $col;
        }
        $oncl = "wch();location.href=\"" . makeURL('usperf') . "\"";
        $pg .= "<button type=button onclick='{$oncl}'>Update</button></form><div>";
        foreach ($cbx as $nam => $txt) {
            $pg .= ' <span class=nb>';
            $pg .= "<input type=checkbox id={$nam} onclick='gact(this)'>";
            $pg .= "{$txt}&nbsp;</span>";
        }
        $pg .= '</div>';
        $pg .= '<div id=can0><canvas id=can width=1 height=1>';
        $pg .= 'A graph will show here if your browser supports html5/canvas';
        $pg .= "</canvas></div>\n";
        $data = str_replace(array("\\", "'"), array("\\\\", "\\'"), $ans['DATA']);
        $data .= $fld_sep . 'cols' . $val_sep . $datacols;
        $pg .= "<script type='text/javascript'>\n";
        $pg .= uspg($nc, '#ff0000', '#fff0f0');
        $pg .= "\nfunction godrw(f){var cbx=[";
        $comma = '';
        foreach ($cbx as $nam => $txt) {
            $pg .= "{$comma}'{$nam}'";
            $comma = ',';
        }
        $pg .= '];if(f){var xon={};';
        foreach ($xon as $nam => $val) {
            $pg .= "xon['{$nam}']=1;";
        }
        $pg .= "doinit(cbx,xon)}dodrw('{$data}',cbx)};godrw(1);</script>\n";
    }
    return $pg;
}
Example #3
0
function doblocks($data, $user)
{
    $blink = '<a href=https://www.blocktrail.com/BTC/block/';
    $pg = '';
    if ($user === null) {
        $ans = getBlocks('Anon');
    } else {
        $ans = getBlocks($user);
    }
    if (nuem(getparam('csv', true))) {
        $wantcsv = false;
    } else {
        $wantcsv = true;
    }
    if ($wantcsv === false) {
        if ($ans['STATUS'] == 'ok' and isset($ans['s_rows']) and $ans['s_rows'] > 0) {
            $pg .= '<h1>Block Statistics</h1>';
            $pg .= "<table callpadding=0 cellspacing=0 border=0>\n";
            $pg .= "<tr class=title>";
            $pg .= "<td class=dl>Description</td>";
            $pg .= "<td class=dr>Time</td>";
            $pg .= "<td class=dr>MeanTx%</td>";
            $pg .= "<td class=dr>Diff%</td>";
            $pg .= "<td class=dr>Mean%</td>";
            $pg .= "<td class=dr>CDF[Erl]</td>";
            $pg .= "<td class=dr>Luck%</td>";
            $pg .= "</tr>\n";
            $since = $data['info']['lastblock'];
            $count = $ans['s_rows'];
            for ($i = 0; $i < $count; $i++) {
                if ($i % 2 == 0) {
                    $row = 'even';
                } else {
                    $row = 'odd';
                }
                $desc = $ans['s_desc:' . $i];
                $age = daysago($since - $ans['s_prevcreatedate:' . $i]);
                $diff = number_format(100 * $ans['s_diffratio:' . $i], 2);
                $mean = number_format(100 * $ans['s_diffmean:' . $i], 2);
                $cdferl = $ans['s_cdferl:' . $i];
                list($fg, $bg) = erlcolour($cdferl);
                $cdferldsp = "<font color={$fg}>" . number_format($cdferl, 4) . '</font>';
                $bg = " bgcolor={$bg}";
                $luck = number_format(100 * $ans['s_luck:' . $i], 2);
                $txm = number_format(100 * $ans['s_txmean:' . $i], 1);
                $pg .= "<tr class={$row}>";
                $pg .= "<td class=dl>{$desc} Blocks</td>";
                $pg .= "<td class=dr>{$age}</td>";
                $pg .= "<td class=dr>{$txm}%</td>";
                $pg .= "<td class=dr>{$diff}%</td>";
                $pg .= "<td class=dr>{$mean}%</td>";
                $pg .= "<td class=dr{$bg}>{$cdferldsp}</td>";
                $pg .= "<td class=dr>{$luck}%</td>";
                $pg .= "</tr>\n";
            }
            $pg .= "</table>\n";
        }
        if ($ans['STATUS'] == 'ok') {
            $count = $ans['rows'];
            if ($count == 1) {
                $num = '';
                $s = '';
            } else {
                $num = " {$count}";
                $s = 's';
            }
            $pg .= "<h1>Last{$num} Block{$s}</h1>";
        } else {
            $pg .= '<h1>Blocks</h1>';
        }
        list($fg, $bg) = pctcolour(25.0);
        $pg .= "<span style='background:{$bg}; color:{$fg};'>";
        $pg .= "&nbsp;Green&nbsp;</span>&nbsp;";
        $pg .= 'is good luck. Lower Diff% and brighter green is better luck.<br>';
        list($fg, $bg) = pctcolour(100.0);
        $pg .= "<span style='background:{$bg}; color:{$fg};'>";
        $pg .= "&nbsp;100%&nbsp;</span>&nbsp;";
        $pg .= 'is expected average.&nbsp;';
        list($fg, $bg) = pctcolour(400.0);
        $pg .= "<span style='background:{$bg}; color:{$fg};'>";
        $pg .= "&nbsp;Red&nbsp;</span>&nbsp;";
        $pg .= 'is bad luck. Higher Diff% and brighter red is worse luck.<br><br>';
        $pg .= "<table callpadding=0 cellspacing=0 border=0>\n";
        $pg .= "<tr class=title>";
        $pg .= "<td class=dr>#</td>";
        $pg .= "<td class=dl>Height</td>";
        if ($user !== null) {
            $pg .= "<td class=dl>Who</td>";
        }
        $pg .= "<td class=dr>Block Reward</td>";
        $pg .= "<td class=dc>When</td>";
        $pg .= "<td class=dr>Status</td>";
        $pg .= "<td class=dr>Diff</td>";
        $pg .= "<td class=dr>Diff%</td>";
        $pg .= "<td class=dr>CDF</td>";
        $pg .= "<td class=dr>B</td>";
        $pg .= "</tr>\n";
    }
    $blktot = 0;
    $nettot = 0;
    $i = 0;
    $cnt = 0;
    $orph = false;
    $csv = "Sequence,Height,Status,Timestamp,DiffAcc,NetDiff,Hash\n";
    if ($ans['STATUS'] == 'ok') {
        $count = $ans['rows'];
        for ($i = 0; $i < $count; $i++) {
            if ($i % 2 == 0) {
                $row = 'even';
            } else {
                $row = 'odd';
            }
            $hi = $ans['height:' . $i];
            $hifld = "{$blink}{$hi}>{$hi}</a>";
            $ex = '';
            $conf = $ans['confirmed:' . $i];
            $stat = $ans['status:' . $i];
            $inf = $ans['info:' . $i];
            $tt = '';
            if ($conf == 'O' or $conf == 'R') {
                $ex = 's';
                $orph = true;
                $seq = '';
                $nn = $cnt;
                if ($conf == 'R') {
                    addTips();
                    $in = explode(':', $inf, 2);
                    if (trim($in[0]) != '') {
                        $stat = trim($in[0]);
                    }
                    if (count($in) < 2 or trim($in[1]) == '') {
                        $tip = 'Share diff was VERY close<br>';
                        $tip .= 'so we tested it,<br>';
                        $tip .= "but it wasn't worthy<br>";
                    } else {
                        $tip = str_replace('+', '<br>', trim($in[1]));
                    }
                    $tt = "<span class=q onclick='tip(\"btip{$i}\",6000)'>";
                    $tt .= '?</span><span class=tip0>';
                    $tt .= "<span class=notip id=btip{$i}>";
                    $tt .= "{$tip}</span></span>";
                }
            } else {
                $seq = $ans['seq:' . $i];
                $nn = ++$cnt;
            }
            if ($conf == '1') {
                if (isset($data['info']['lastheight'])) {
                    $confn = 1 + $data['info']['lastheight'] - $hi;
                    $stat = '+' . $confn . ' Confirms';
                } else {
                    $stat = 'Conf';
                }
            }
            $stara = '';
            if ($conf == 'O' or $conf == 'R') {
                $stara = '<span class=st1>*</span>';
            }
            if (isset($ans['statsconf:' . $i])) {
                if ($ans['statsconf:' . $i] == 'Y') {
                    $approx = '';
                } else {
                    $approx = '~';
                }
            } else {
                $approx = '';
            }
            $diffacc = $ans['diffacc:' . $i];
            $acc = number_format($diffacc, 0);
            $netdiff = $ans['netdiff:' . $i];
            $diffratio = $ans['diffratio:' . $i];
            $cdf = $ans['cdf:' . $i];
            $luck = $ans['luck:' . $i];
            if ($diffratio > 0) {
                $pct = 100.0 * $diffratio;
                list($fg, $bg) = pctcolour($pct);
                $bpct = "<font color={$fg}>{$approx}" . number_format($pct, 3) . '%</font>';
                $bg = " bgcolor={$bg}";
                $blktot += $diffacc;
                if ($conf != 'O' and $conf != 'R') {
                    $nettot += $netdiff;
                }
                $cdfdsp = number_format($cdf, 3);
            } else {
                $bg = '';
                $bpct = '?';
                $cdfdsp = '?';
            }
            if ($wantcsv === false) {
                $pg .= "<tr class={$row}>";
                $pg .= "<td class=dr{$ex}>{$seq}</td>";
                $pg .= "<td class=dl{$ex}>{$hifld}</td>";
                if ($user !== null) {
                    $pg .= "<td class=dl{$ex}>" . htmlspecialchars($ans['workername:' . $i]) . '</td>';
                }
                $pg .= "<td class=dr{$ex}>" . btcfmt($ans['reward:' . $i]) . '</td>';
                $pg .= "<td class=dl{$ex}>" . utcd($ans['firstcreatedate:' . $i]) . '</td>';
                $pg .= "<td class=dr{$ex}>{$tt}{$stat}</td>";
                $pg .= "<td class=dr>{$stara}{$approx}{$acc}</td>";
                $pg .= "<td class=dr{$bg}>{$bpct}</td>";
                $pg .= "<td class=dr>{$cdfdsp}</td>";
                $pg .= "<td class=dr>{$nn}</td>";
                $pg .= "</tr>\n";
            } else {
                $csv .= "{$seq},";
                $csv .= "{$hi},";
                $csv .= "\"{$stat}\",";
                $csv .= $ans['firstcreatedate:' . $i] . ',';
                $csv .= "{$diffacc},";
                $csv .= "{$netdiff},";
                $csv .= $ans['blockhash:' . $i] . "\n";
            }
        }
    }
    if ($wantcsv === true) {
        echo $csv;
        exit(0);
    }
    if ($orph === true) {
        $pg .= '<tr><td colspan=';
        if ($user === null) {
            $pg .= '7';
        } else {
            $pg .= '8';
        }
        $pg .= ' class=dc><font size=-1><span class=st1>*</span>';
        $pg .= 'Orphans/Rejects count as shares but not as a block in calculations';
        $pg .= '</font></td></tr>';
    }
    $pg .= "</table>\n";
    return $pg;
}