Example #1
0
function fmt($section, $name, $value, $when, $alldata)
{
    global $dfmt, $rownum;
    if ($alldata == null) {
        $alldata = array();
    }
    $errorclass = ' class=err';
    $warnclass = ' class=warn';
    $lstclass = ' class=lst';
    $hiclass = ' class=hi';
    $loclass = ' class=lo';
    $c2class = ' class=two';
    $totclass = ' class=tot';
    $b = ' ';
    $ret = $value;
    $class = '';
    $nams = explode('.', $name);
    if (count($nams) > 1) {
        $name = $nams[count($nams) - 1];
    }
    if ($value === null) {
        $ret = $b;
    } else {
        switch ($section . '.' . $name) {
            case 'GPU.Last Share Time':
            case 'PGA.Last Share Time':
            case 'ASC.Last Share Time':
            case 'DEVS.Last Share Time':
                if ($value == 0 || isset($alldata['Last Share Pool']) && $alldata['Last Share Pool'] == -1) {
                    $ret = 'Never';
                    $class = $warnclass;
                } else {
                    $ret = date('H:i:s', $value);
                    $class = classlastshare($when, $alldata, $warnclass, $errorclass);
                }
                break;
            case 'GPU.Last Valid Work':
            case 'PGA.Last Valid Work':
            case 'ASC.Last Valid Work':
            case 'DEVS.Last Valid Work':
                if ($value == 0) {
                    $ret = 'Never';
                } else {
                    $ret = $value - $when . 's';
                }
                break;
            case 'POOL.Last Share Time':
                if ($value == 0) {
                    $ret = 'Never';
                } else {
                    $ret = date('H:i:s d-M', $value);
                }
                break;
            case 'GPU.Last Share Pool':
            case 'PGA.Last Share Pool':
            case 'ASC.Last Share Pool':
            case 'DEVS.Last Share Pool':
                if ($value == -1) {
                    $ret = 'None';
                    $class = $warnclass;
                }
                break;
            case 'SUMMARY.Elapsed':
            case 'STATS.Elapsed':
                $s = $value % 60;
                $value -= $s;
                $value /= 60;
                if ($value == 0) {
                    $ret = $s . 's';
                } else {
                    $m = $value % 60;
                    $value -= $m;
                    $value /= 60;
                    if ($value == 0) {
                        $ret = sprintf("%dm{$b}%02ds", $m, $s);
                    } else {
                        $h = $value % 24;
                        $value -= $h;
                        $value /= 24;
                        if ($value == 0) {
                            $ret = sprintf("%dh{$b}%02dm{$b}%02ds", $h, $m, $s);
                        } else {
                            if ($value == 1) {
                                $days = '';
                            } else {
                                $days = 's';
                            }
                            $ret = sprintf("%dday{$days}{$b}%02dh{$b}%02dm{$b}%02ds", $value, $h, $m, $s);
                        }
                    }
                }
                break;
            case 'NOTIFY.Last Well':
                if ($value == '0') {
                    $ret = 'Never';
                    $class = $warnclass;
                } else {
                    $ret = date('H:i:s', $value);
                }
                break;
            case 'NOTIFY.Last Not Well':
                if ($value == '0') {
                    $ret = 'Never';
                } else {
                    $ret = date('H:i:s', $value);
                    $class = $errorclass;
                }
                break;
            case 'NOTIFY.Reason Not Well':
                if ($value != 'None') {
                    $class = $errorclass;
                }
                break;
            case 'GPU.Utility':
            case 'PGA.Utility':
            case 'ASC.Utility':
            case 'DEVS.Utility':
            case 'SUMMARY.Utility':
            case 'total.Utility':
                $ret = $value . '/m';
                if ($value == 0) {
                    $class = $errorclass;
                } else {
                    if (isset($alldata['Difficulty Accepted']) && isset($alldata['Accepted']) && isset($alldata['MHS av']) && $alldata['Difficulty Accepted'] > 0 && $alldata['Accepted'] > 0) {
                        $expected = 60 * $alldata['MHS av'] * (pow(10, 6) / pow(2, 32));
                        if ($expected == 0) {
                            $expected = 1.0E-6;
                        }
                        // 1 H/s
                        $da = $alldata['Difficulty Accepted'];
                        $a = $alldata['Accepted'];
                        $expected /= $da / $a;
                        $ratio = $value / $expected;
                        if ($ratio < 0.9) {
                            $class = $loclass;
                        } else {
                            if ($ratio > 1.1) {
                                $class = $hiclass;
                            }
                        }
                    }
                }
                break;
            case 'SUMMARY.Work Utility':
            case 'total.Work Utility':
                $ret = $value . '/m';
                break;
            case 'GPU.Temperature':
            case 'PGA.Temperature':
            case 'ASC.Temperature':
            case 'DEVS.Temperature':
                $ret = $value . '&deg;C';
                if (!isset($alldata['GPU'])) {
                    if ($value == 0) {
                        $ret = '&nbsp;';
                    }
                    break;
                }
            case 'GPU.GPU Clock':
            case 'DEVS.GPU Clock':
            case 'GPU.Memory Clock':
            case 'DEVS.Memory Clock':
            case 'GPU.GPU Voltage':
            case 'DEVS.GPU Voltage':
            case 'GPU.GPU Activity':
            case 'DEVS.GPU Activity':
                if ($value == 0) {
                    $class = $warnclass;
                }
                break;
            case 'GPU.Fan Percent':
            case 'DEVS.Fan Percent':
                if ($value == 0) {
                    $class = $warnclass;
                } else {
                    if ($value == 100) {
                        $class = $errorclass;
                    } else {
                        if ($value > 85) {
                            $class = $warnclass;
                        }
                    }
                }
                break;
            case 'GPU.Fan Speed':
            case 'DEVS.Fan Speed':
                if ($value == 0) {
                    $class = $warnclass;
                } else {
                    if (isset($alldata['Fan Percent'])) {
                        $test = $alldata['Fan Percent'];
                        if ($test == 100) {
                            $class = $errorclass;
                        } else {
                            if ($test > 85) {
                                $class = $warnclass;
                            }
                        }
                    }
                }
                break;
            case 'GPU.MHS av':
            case 'PGA.MHS av':
            case 'ASC.MHS av':
            case 'DEVS.MHS av':
            case 'SUMMARY.MHS av':
            case 'total.MHS av':
                $parts = explode('.', $value, 2);
                if (count($parts) == 1) {
                    $dec = '';
                } else {
                    $dec = '.' . $parts[1];
                }
                $ret = number_format((double) $parts[0]) . $dec;
                if ($value == 0) {
                    $class = $errorclass;
                } else {
                    if (isset($alldata['Difficulty Accepted']) && isset($alldata['Accepted']) && isset($alldata['Utility']) && $alldata['Difficulty Accepted'] > 0 && $alldata['Accepted'] > 0) {
                        $expected = 60 * $value * (pow(10, 6) / pow(2, 32));
                        if ($expected == 0) {
                            $expected = 1.0E-6;
                        }
                        // 1 H/s
                        $da = $alldata['Difficulty Accepted'];
                        $a = $alldata['Accepted'];
                        $expected /= $da / $a;
                        $ratio = $alldata['Utility'] / $expected;
                        if ($ratio < 0.9) {
                            $class = $hiclass;
                        } else {
                            if ($ratio > 1.1) {
                                $class = $loclass;
                            }
                        }
                    }
                }
                break;
            case 'GPU.Total MH':
            case 'PGA.Total MH':
            case 'ASC.Total MH':
            case 'DEVS.Total MH':
            case 'SUMMARY.Total MH':
            case 'total.Total MH':
            case 'SUMMARY.Getworks':
            case 'POOL.Getworks':
            case 'total.Getworks':
            case 'GPU.Accepted':
            case 'PGA.Accepted':
            case 'ASC.Accepted':
            case 'DEVS.Accepted':
            case 'SUMMARY.Accepted':
            case 'POOL.Accepted':
            case 'total.Accepted':
            case 'GPU.Rejected':
            case 'PGA.Rejected':
            case 'ASC.Rejected':
            case 'DEVS.Rejected':
            case 'SUMMARY.Rejected':
            case 'POOL.Rejected':
            case 'total.Rejected':
            case 'SUMMARY.Local Work':
            case 'total.Local Work':
            case 'SUMMARY.Discarded':
            case 'POOL.Discarded':
            case 'total.Discarded':
            case 'POOL.Diff1 Shares':
            case 'total.Diff1 Shares':
            case 'GPU.Diff1 Work':
            case 'PGA.Diff1 Work':
            case 'ASC.Diff1 Work':
            case 'total.Diff1 Work':
            case 'STATS.Times Sent':
            case 'STATS.Bytes Sent':
            case 'STATS.Net Bytes Sent':
            case 'STATS.Times Recv':
            case 'STATS.Bytes Recv':
            case 'STATS.Net Bytes Recv':
            case 'total.Times Sent':
            case 'total.Bytes Sent':
            case 'total.Net Bytes Sent':
            case 'total.Times Recv':
            case 'total.Bytes Recv':
            case 'total.Net Bytes Recv':
                $parts = explode('.', $value, 2);
                if (count($parts) == 1) {
                    $dec = '';
                } else {
                    $dec = '.' . $parts[1];
                }
                $ret = number_format((double) $parts[0]) . $dec;
                break;
            case 'STATS.Hs':
            case 'STATS.W':
            case 'STATS.history_time':
            case 'STATS.Pool Wait':
            case 'STATS.Pool Max':
            case 'STATS.Pool Min':
            case 'STATS.Pool Av':
            case 'STATS.Min Diff':
            case 'STATS.Max Diff':
            case 'STATS.Work Diff':
                $parts = explode('.', $value, 2);
                if (count($parts) == 1) {
                    $dec = '';
                } else {
                    $dec = '.' . endzero($parts[1]);
                }
                $ret = number_format((double) $parts[0]) . $dec;
                break;
            case 'GPU.Status':
            case 'PGA.Status':
            case 'ASC.Status':
            case 'DEVS.Status':
            case 'POOL.Status':
                if ($value != 'Alive') {
                    $class = $errorclass;
                }
                break;
            case 'GPU.Enabled':
            case 'PGA.Enabled':
            case 'ASC.Enabled':
            case 'ASC.Enabled':
            case 'DEVS.Enabled':
                if ($value != 'Y') {
                    $class = $warnclass;
                }
                break;
            case 'STATUS.When':
            case 'COIN.Current Block Time':
                $ret = date($dfmt, $value);
                break;
            case 'BUTTON.Rig':
            case 'BUTTON.Pool':
            case 'BUTTON.GPU':
                $ret = $value;
                break;
            case 'SUMMARY.Difficulty Accepted':
            case 'GPU.Difficulty Accepted':
            case 'PGA.Difficulty Accepted':
            case 'ASC.Difficulty Accepted':
            case 'DEVS.Difficulty Accepted':
            case 'POOL.Difficulty Accepted':
            case 'total.Difficulty Accepted':
            case 'SUMMARY.Difficulty Rejected':
            case 'GPU.Difficulty Rejected':
            case 'PGA.Difficulty Rejected':
            case 'ASC.Difficulty Rejected':
            case 'DEVS.Difficulty Rejected':
            case 'POOL.Difficulty Rejected':
            case 'total.Difficulty Rejected':
            case 'SUMMARY.Difficulty Stale':
            case 'POOL.Difficulty Stale':
            case 'total.Difficulty Stale':
            case 'GPU.Last Share Difficulty':
            case 'PGA.Last Share Difficulty':
            case 'ASC.Last Share Difficulty':
            case 'DEVS.Last Share Difficulty':
            case 'POOL.Last Share Difficulty':
                if ($value != '') {
                    $ret = number_format((double) $value, 2);
                }
                break;
            case 'DEVS.Device Hardware%':
            case 'DEVS.Device Rejected%':
            case 'ASC.Device Hardware%':
            case 'ASC.Device Rejected%':
            case 'PGA.Device Hardware%':
            case 'PGA.Device Rejected%':
            case 'GPU.Device Hardware%':
            case 'GPU.Device Rejected%':
            case 'POOL.Pool Rejected%':
            case 'POOL.Pool Stale%':
            case 'SUMMARY.Device Hardware%':
            case 'SUMMARY.Device Rejected%':
            case 'SUMMARY.Pool Rejected%':
            case 'SUMMARY.Pool Stale%':
                if ($value != '') {
                    $ret = number_format((double) $value, 2) . '%';
                }
                break;
            case 'SUMMARY.Best Share':
                if ($value != '') {
                    $ret = number_format((double) $value);
                }
                break;
        }
    }
    if ($section == 'NOTIFY' && substr($name, 0, 1) == '*' && $value != '0') {
        $class = $errorclass;
    }
    if ($class == '' && $section != 'POOL') {
        $class = classlastshare($when, $alldata, $lstclass, $lstclass);
    }
    if ($class == '' && $section == 'total') {
        $class = $totclass;
    }
    if ($class == '' && $rownum % 2 == 0) {
        $class = $c2class;
    }
    if ($ret === '') {
        $ret = $b;
    }
    return array($ret, $class);
}
Example #2
0
function fmt($section, $name, $value, $when, $alldata, $cf = NULL)
{
    global $dfmt, $rownum;
    if ($alldata == null) {
        $alldata = array();
    }
    $errorclass = 'err';
    $warnclass = 'warn';
    $lstclass = 'lst';
    $hiclass = 'hi';
    $loclass = 'lo';
    $c2class = 'two';
    $totclass = 'tot';
    $b = '&nbsp;';
    $class = '';
    $nams = explode('.', $name);
    if (count($nams) > 1) {
        $name = $nams[count($nams) - 1];
    }
    $done = false;
    if ($value === null) {
        $ret = $b;
        $done = true;
    } else {
        if ($cf != NULL and function_exists($cf)) {
            list($ret, $class) = $cf($section, $name, $value, $when, $alldata, $warnclass, $errorclass, $hiclass, $loclass, $totclass);
            if ($ret !== '') {
                $done = true;
            }
        }
    }
    if ($done === false) {
        $ret = $value;
        /*
         * To speed up the PHP, the case statement is just $name
         * It used to be $section.'.'.$name
         * If any names clash, the case code will need to check the value of
         * $section to resolve the clash - as with 'Last Share Time' below
         * If the code picks up a field that you wish to format differently,
         * then you'll need a customsummarypage 'fmt' extension
         */
        switch ($name) {
            case 'Last Share Time':
                if ($section == 'POOL') {
                    if ($value == 0) {
                        $ret = 'Never';
                    } else {
                        $ret = date('H:i:s d-M', $value);
                    }
                } else {
                    if ($value == 0 || isset($alldata['Last Share Pool']) && $alldata['Last Share Pool'] == -1) {
                        $ret = 'Never';
                        $class = $warnclass;
                    } else {
                        $ret = date('H:i:s', $value);
                        $class = classlastshare($when, $alldata, $warnclass, $errorclass);
                    }
                }
                break;
            case 'Last getwork':
            case 'Last Valid Work':
                if ($value == 0) {
                    $ret = 'Never';
                } else {
                    $ret = $value - $when . 's';
                }
                break;
            case 'Last Share Pool':
                if ($value == -1) {
                    $ret = 'None';
                    $class = $warnclass;
                }
                break;
            case 'Elapsed':
            case 'Device Elapsed':
                $s = $value % 60;
                $value -= $s;
                $value /= 60;
                if ($value == 0) {
                    $ret = $s . 's';
                } else {
                    $m = $value % 60;
                    $value -= $m;
                    $value /= 60;
                    if ($value == 0) {
                        $ret = sprintf("%dm{$b}%02ds", $m, $s);
                    } else {
                        $h = $value % 24;
                        $value -= $h;
                        $value /= 24;
                        if ($value == 0) {
                            $ret = sprintf("%dh{$b}%02dm{$b}%02ds", $h, $m, $s);
                        } else {
                            if ($value == 1) {
                                $days = '';
                            } else {
                                $days = 's';
                            }
                            $ret = sprintf("%dday{$days}{$b}%02dh{$b}%02dm{$b}%02ds", $value, $h, $m, $s);
                        }
                    }
                }
                break;
            case 'Last Well':
                if ($value == '0') {
                    $ret = 'Never';
                    $class = $warnclass;
                } else {
                    $ret = date('H:i:s', $value);
                }
                break;
            case 'Last Not Well':
                if ($value == '0') {
                    $ret = 'Never';
                } else {
                    $ret = date('H:i:s', $value);
                    $class = $errorclass;
                }
                break;
            case 'Reason Not Well':
                if ($value != 'None') {
                    $class = $errorclass;
                }
                break;
            case 'Utility':
                $ret = number_format($value, 2) . '/m';
                if ($value == 0) {
                    $class = $errorclass;
                } else {
                    if (isset($alldata['Difficulty Accepted']) && isset($alldata['Accepted']) && isset($alldata['MHS av']) && $alldata['Difficulty Accepted'] > 0 && $alldata['Accepted'] > 0) {
                        $expected = 60 * $alldata['MHS av'] * (pow(10, 6) / pow(2, 32));
                        if ($expected == 0) {
                            $expected = 1.0E-6;
                        }
                        // 1 H/s
                        $da = $alldata['Difficulty Accepted'];
                        $a = $alldata['Accepted'];
                        $expected /= $da / $a;
                        $ratio = $value / $expected;
                        if ($ratio < 0.9) {
                            $class = $loclass;
                        } else {
                            if ($ratio > 1.1) {
                                $class = $hiclass;
                            }
                        }
                    }
                }
                break;
            case 'Work Utility':
                $ret = number_format($value, 2) . '/m';
                break;
            case 'Temperature':
                $ret = $value . '&deg;C';
                if (!isset($alldata['GPU'])) {
                    if ($value == 0) {
                        $ret = '&nbsp;';
                    }
                    break;
                }
            case 'GPU Clock':
            case 'Memory Clock':
            case 'GPU Voltage':
            case 'GPU Activity':
                if ($value == 0) {
                    $class = $warnclass;
                }
                break;
            case 'Fan Percent':
                if ($value == 0) {
                    $class = $warnclass;
                } else {
                    if ($value == 100) {
                        $class = $errorclass;
                    } else {
                        if ($value > 85) {
                            $class = $warnclass;
                        }
                    }
                }
                break;
            case 'Fan Speed':
                if ($value == 0) {
                    $class = $warnclass;
                } else {
                    if (isset($alldata['Fan Percent'])) {
                        $test = $alldata['Fan Percent'];
                        if ($test == 100) {
                            $class = $errorclass;
                        } else {
                            if ($test > 85) {
                                $class = $warnclass;
                            }
                        }
                    }
                }
                break;
            case 'MHS av':
            case 'MHS 5s':
            case 'MHS 1m':
            case 'MHS 5m':
            case 'MHS 15m':
                $parts = explode('.', $value, 2);
                if (count($parts) == 1) {
                    $dec = '';
                } else {
                    $dec = '.' . $parts[1];
                }
                $ret = number_format((double) $parts[0]) . $dec;
                if ($value == 0) {
                    $class = $errorclass;
                } else {
                    if (isset($alldata['Difficulty Accepted']) && isset($alldata['Accepted']) && isset($alldata['Utility']) && $alldata['Difficulty Accepted'] > 0 && $alldata['Accepted'] > 0) {
                        $expected = 60 * $value * (pow(10, 6) / pow(2, 32));
                        if ($expected == 0) {
                            $expected = 1.0E-6;
                        }
                        // 1 H/s
                        $da = $alldata['Difficulty Accepted'];
                        $a = $alldata['Accepted'];
                        $expected /= $da / $a;
                        $ratio = $alldata['Utility'] / $expected;
                        if ($ratio < 0.9) {
                            $class = $hiclass;
                        } else {
                            if ($ratio > 1.1) {
                                $class = $loclass;
                            }
                        }
                    }
                }
                break;
            case 'Total MH':
            case 'Getworks':
            case 'Works':
            case 'Accepted':
            case 'Rejected':
            case 'Local Work':
            case 'Discarded':
            case 'Diff1 Shares':
            case 'Diff1 Work':
            case 'Times Sent':
            case 'Bytes Sent':
            case 'Net Bytes Sent':
            case 'Times Recv':
            case 'Bytes Recv':
            case 'Net Bytes Recv':
                $parts = explode('.', $value, 2);
                if (count($parts) == 1) {
                    $dec = '';
                } else {
                    $dec = '.' . $parts[1];
                }
                $ret = number_format((double) $parts[0]) . $dec;
                break;
            case 'Hs':
            case 'W':
            case 'history_time':
            case 'Pool Wait':
            case 'Pool Max':
            case 'Pool Min':
            case 'Pool Av':
            case 'Min Diff':
            case 'Max Diff':
            case 'Work Diff':
                $parts = explode('.', $value, 2);
                if (count($parts) == 1) {
                    $dec = '';
                } else {
                    $dec = '.' . endzero($parts[1]);
                }
                $ret = number_format((double) $parts[0]) . $dec;
                break;
            case 'Status':
                if ($value != 'Alive') {
                    $class = $errorclass;
                }
                break;
            case 'Enabled':
                if ($value != 'Y') {
                    $class = $warnclass;
                }
                break;
            case 'No Device':
                if ($value != 'false') {
                    $class = $errorclass;
                }
                break;
            case 'When':
            case 'Current Block Time':
                $ret = date($dfmt, $value);
                break;
            case 'Difficulty Accepted':
            case 'Difficulty Rejected':
            case 'Difficulty Stale':
            case 'Last Share Difficulty':
                if ($value != '') {
                    $ret = number_format((double) $value, 2);
                }
                break;
            case 'Device Hardware%':
            case 'Device Rejected%':
            case 'Pool Rejected%':
            case 'Pool Stale%':
                if ($value != '') {
                    $ret = number_format((double) $value, 2) . '%';
                }
                break;
            case 'Best Share':
            case 'Hardware Errors':
                if ($value != '') {
                    $ret = number_format((double) $value);
                }
                break;
                // BUTTON.
            // BUTTON.
            case 'Rig':
            case 'Pool':
            case 'GPU':
                break;
                // Sample GEN fields
            // Sample GEN fields
            case 'Mined':
                if ($value != '') {
                    $ret = number_format((double) $value * 100.0, 3) . '%';
                }
                break;
            case 'Acc':
            case 'Rej':
                if ($value != '') {
                    $ret = number_format((double) $value * 100.0, 2) . '%';
                }
                break;
            case 'GHS av':
            case 'GHS 5m':
            case 'GHS WU':
            case 'GHS Acc':
                if ($value != '') {
                    $ret = number_format((double) $value, 2);
                }
                break;
            case 'AvShr':
                if ($value != '') {
                    $ret = number_format((double) $value, 2);
                }
                if ($value == 0) {
                    $class = $warnclass;
                }
                break;
        }
    }
    if ($section == 'NOTIFY' && substr($name, 0, 1) == '*' && $value != '0') {
        $class = $errorclass;
    }
    if ($class == '' && $section != 'POOL') {
        $class = classlastshare($when, $alldata, $lstclass, $lstclass);
    }
    if ($class == '' && $section == 'total') {
        $class = $totclass;
    }
    if ($class == '' && $rownum % 2 == 0) {
        $class = $c2class;
    }
    if ($ret === '') {
        $ret = $b;
    }
    if ($class !== '') {
        $class = " class={$class}";
    }
    return array($ret, $class);
}