1<?php
2
3use LibreNMS\Device\WirelessSensor;
4use LibreNMS\Util\Number;
5
6// this determines the order of the tabs
7$types = WirelessSensor::getTypes();
8
9$sensors = dbFetchColumn(
10    'SELECT `sensor_class` FROM `wireless_sensors` WHERE `device_id` = ? GROUP BY `sensor_class`',
11    [$device['device_id']]
12);
13$datas = array_intersect(array_keys($types), $sensors);
14
15$wireless_link_array = [
16    'page'   => 'device',
17    'device' => $device['device_id'],
18    'tab'    => 'wireless',
19];
20
21print_optionbar_start();
22
23echo "<span style='font-weight: bold;'>Wireless</span> &#187; ";
24
25if (! $vars['metric']) {
26    $vars['metric'] = 'overview';
27}
28
29$sep = '';
30echo '<span' . ($vars['metric'] == 'overview' ? ' class="pagemenu-selected"' : '') . '>';
31echo generate_link('Overview', $wireless_link_array, ['metric' => 'overview']);
32echo '</span>';
33
34foreach ($datas as $type) {
35    echo ' | <span';
36    if ($vars['metric'] == $type) {
37        echo ' class="pagemenu-selected"';
38    }
39    echo '>';
40
41    echo generate_link(__("wireless.$type.short"), $wireless_link_array, ['metric' => $type]);
42
43    echo '</span>';
44}
45
46print_optionbar_end();
47
48if ($vars['metric'] == 'overview') {
49    foreach ($datas as $type) {
50        $text = __("wireless.$type.long");
51        $unit = __("wireless.$type.unit");
52        if (! empty($unit)) {
53            $text .= " ($unit)";
54        }
55
56        $graph_title = generate_link($text, $wireless_link_array, ['metric' => $type]);
57        $graph_array['type'] = 'device_wireless_' . $type;
58
59        include \LibreNMS\Config::get('install_dir') . '/includes/html/print-device-graph.php';
60    }
61} elseif (isset($types[$vars['metric']])) {
62    $unit = __('wireless.' . $vars['metric'] . '.unit');
63    $factor = 1;
64    if ($unit == 'MHz') {
65        $unit = 'Hz';
66        $factor = 1000000;
67    }
68    $row = 0;
69
70    $sensors = dbFetchRows(
71        'SELECT * FROM `wireless_sensors` WHERE `sensor_class` = ? AND `device_id` = ? ORDER BY `sensor_descr`',
72        [$vars['metric'], $device['device_id']]
73    );
74    foreach ($sensors as $sensor) {
75        if (! is_integer($row++ / 2)) {
76            $row_colour = \LibreNMS\Config::get('list_colour.even');
77        } else {
78            $row_colour = \LibreNMS\Config::get('list_colour.odd');
79        }
80
81        $sensor_descr = $sensor['sensor_descr'];
82
83        if (empty($unit)) {
84            $sensor_current = ((int) $sensor['sensor_current']) . $unit;
85            $sensor_limit = ((int) $sensor['sensor_limit']) . $unit;
86            $sensor_limit_low = ((int) $sensor['sensor_limit_low']) . $unit;
87        } else {
88            $sensor_current = Number::formatSi($sensor['sensor_current'] * $factor, 3, 3, $unit);
89            $sensor_limit = Number::formatSi($sensor['sensor_limit'] * $factor, 3, 3, $unit);
90            $sensor_limit_low = Number::formatSi($sensor['sensor_limit_low'] * $factor, 3, 3, $unit);
91        }
92
93        echo "<div class='panel panel-default'>
94            <div class='panel-heading'>
95                <h3 class='panel-title'>
96                    $sensor_descr
97                    <div class='pull-right'>$sensor_current | $sensor_limit_low <> $sensor_limit</div>
98                </h3>
99            </div>";
100        echo "<div class='panel-body'>";
101
102        $graph_array['id'] = $sensor['sensor_id'];
103        $graph_array['type'] = 'wireless_' . $vars['metric'];
104
105        include \LibreNMS\Config::get('install_dir') . '/includes/html/print-graphrow.inc.php';
106
107        echo '</div></div>';
108    }
109}
110
111$pagetitle[] = 'Wireless';
112