Commit ca19fb03 authored by Ad Schellevis's avatar Ad Schellevis

(dashboard, widgets) refactor interface_statistics.widget.php, use callbacks to update data

parent ecb13223
<?php
/*
Copyright (C) 2014 Deciso B.V.
Copyright (C) 2014-2016 Deciso B.V.
Copyright (C) 2007 Scott Dale
Copyright (C) 2004-2005 T. Lechat <dev@lechat.org>, Manuel Kasper <mk@neon1.net>
and Jonathan Watt <jwatt@jwatt.org>.
......@@ -28,188 +28,48 @@
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
$nocsrf = true;
require_once("guiconfig.inc");
require_once("pfsense-utils.inc");
require_once("interfaces.inc");
require_once("widgets/include/interface_statistics.inc");
$ifdescrs = get_configured_interface_with_descr();
$array_in_packets = array();
$array_out_packets = array();
$array_in_bytes = array();
$array_out_bytes = array();
$array_in_errors = array();
$array_out_errors = array();
$array_collisions = array();
$array_interrupt = array();
$interfacecounter = 0;
//build data arrays
foreach ($ifdescrs as $ifdescr => $ifname) {
$ifinfo = get_interface_info($ifdescr);
$interfacecounter++;
if ($ifinfo['status'] != "down") {
$array_in_packets[] = $ifinfo['inpkts'];
$array_out_packets[] = $ifinfo['outpkts'];
$array_in_bytes[] = format_bytes($ifinfo['inbytes']);
$array_out_bytes[] = format_bytes($ifinfo['outbytes']);
if (isset($ifinfo['inerrs'])) {
$array_in_errors[] = $ifinfo['inerrs'];
$array_out_errors[] = $ifinfo['outerrs'];
} else {
$array_in_errors[] = gettext("n/a");
$array_out_errors[] = gettext("n/a");
}
if (isset($ifinfo['collisions'])) {
$array_collisions[] = htmlspecialchars($ifinfo['collisions']);
} else {
$array_collisions[] = gettext("n/a");
}
}
}//end for
?>
<div id="int_labels" style="float:left;width:32%">
<table class="table table-striped" width="100%" border="0" cellspacing="0" cellpadding="0" summary="interfaces statistics">
<tr><td class="widgetsubheader" style="height:25px">&nbsp;&nbsp;&nbsp;</td></tr>
<tr>
<td><b><?php echo gettext('Packets In')?></b></td>
</tr>
<tr>
<td><b><?php echo gettext('Packets Out')?></b></td>
</tr>
<tr>
<td><b><?php echo gettext('Bytes In')?></b></td>
</tr>
<tr>
<td><b><?php echo gettext('Bytes Out')?></b></td>
</tr>
<tr>
<td><b><?php echo gettext('Errors In')?></b></td>
</tr>
<tr>
<td><b><?php echo gettext('Errors Out')?></b></td>
</tr>
<tr>
<td><b><?php echo gettext('Collisions')?></b></td>
</tr>
</table>
</div>
<div id="interfacestats" style="float:right;overflow: auto; width:68%">
<table class="table table-striped" width="100%" border="0" cellspacing="0" cellpadding="0" summary="the stats">
<tr>
<?php
$interface_names = array();
foreach ($ifdescrs as $ifdescr => $ifname) :
$ifinfo = get_interface_info($ifdescr);
if ($ifinfo['status'] != "down") {
?>
<td class="widgetsubheader nowrap" style="height:25px">
<b><?=htmlspecialchars($ifname);?></b>
</td>
<?php
//build array of interface names
$interface_names[] = $ifname;
<script type="text/javascript">
/**
* update interface statistics
*/
function interface_statistics_widget_update(sender, data)
{
var tbody = sender.find('tbody');
var thead = sender.find('thead');
data.map(function(interface_data) {
var th_id = "interface_statistics_widget_intf_" + interface_data['name'];
if (thead.find("#"+th_id).length == 0) {
thead.find('tr:eq(0)').append('<th id="'+th_id+'">'+interface_data['name']+'</th>');
tbody.find('tr').append('<td></td>')
}
endforeach; ?>
</tr>
<tr>
<?php
$counter = 1;
foreach ($array_in_packets as $data) :
?>
<td class="listr nowrap" id="stat<?php echo $counter?>" style="height:25px">
<?=htmlspecialchars($data);?>
</td>
<?php
$counter = $counter + 7;
endforeach; ?>
</tr>
<tr>
<?php
$counter = 2;
foreach ($array_out_packets as $data) :
?>
<td class="listr nowrap" id="stat<?php echo $counter;?>" style="height:25px">
<?=htmlspecialchars($data);?>
</td>
<?php
$counter = $counter + 7;
endforeach; ?>
</tr>
<tr>
<?php
$counter = 3;
foreach ($array_in_bytes as $data) :
?>
<td class="listr nowrap" id="stat<?php echo $counter;?>" style="height:25px">
<?=htmlspecialchars($data);?>
</td>
<?php
$counter = $counter + 7;
endforeach; ?>
</tr>
<tr>
<?php
$counter = 4;
foreach ($array_out_bytes as $data) :
?>
<td class="listr nowrap" id="stat<?php echo $counter;?>" style="height:25px">
<?=htmlspecialchars($data);?>
</td>
<?php
$counter = $counter + 7;
endforeach; ?>
</tr>
<tr>
<?php
$counter = 5;
foreach ($array_in_errors as $data) :
?>
<td class="listr nowrap" id="stat<?php echo $counter;?>" style="height:25px">
<?=htmlspecialchars($data);?>
</td>
<?php
$counter = $counter + 7;
endforeach; ?>
</tr>
<tr>
<?php
$counter = 6;
foreach ($array_out_errors as $data) :
?>
<td class="listr nowrap" id="stat<?php echo $counter;?>" style="height:25px">
<?=htmlspecialchars($data);?>
</td>
<?php
$counter = $counter + 7;
endforeach; ?>
</tr>
// fill in stats, use column index to determine td location
var item_index = $("#"+th_id).index();
$("#interface_statistics_widget_pkg_in > td:eq("+item_index+")").html(interface_data['inpkts']);
$("#interface_statistics_widget_pkg_out > td:eq("+item_index+")").html(interface_data['outpkts']);
$("#interface_statistics_widget_bytes_in > td:eq("+item_index+")").html(interface_data['inbytes_frmt']);
$("#interface_statistics_widget_bytes_out > td:eq("+item_index+")").html(interface_data['outbytes_frmt']);
$("#interface_statistics_widget_errors_in > td:eq("+item_index+")").html(interface_data['inerrs']);
$("#interface_statistics_widget_errors_out > td:eq("+item_index+")").html(interface_data['outerrs']);
$("#interface_statistics_widget_collisions > td:eq("+item_index+")").html(interface_data['collisions']);
});
}
</script>
<table class="table table-striped table-condensed" data-plugin="interfaces" data-callback="interface_statistics_widget_update">
<thead>
<tr>
<?php
$counter = 7;
foreach ($array_collisions as $data) :
?>
<td class="listr nowrap" id="stat<?php echo $counter;?>" style="height:25px">
<?=htmlspecialchars($data);?>
</td>
<?php
$counter = $counter + 7;
endforeach; ?>
<th>&nbsp;</th>
</tr>
</table>
</div>
</thead>
<tbody>
<tr id="interface_statistics_widget_pkg_in"><td><strong><?=gettext('Packets In');?></strong></td></tr>
<tr id="interface_statistics_widget_pkg_out"><td><strong><?=gettext('Packets Out');?></strong></td></tr>
<tr id="interface_statistics_widget_bytes_in"><td><strong><?=gettext('Bytes In');?></strong></td></tr>
<tr id="interface_statistics_widget_bytes_out"><td><strong><?=gettext('Bytes Out');?></strong></td></tr>
<tr id="interface_statistics_widget_errors_in"><td><strong><?=gettext('Errors In');?></strong></td></tr>
<tr id="interface_statistics_widget_errors_out"><td><strong><?=gettext('Errors Out');?></strong></td></tr>
<tr id="interface_statistics_widget_collisions"><td><strong><?=gettext('Collisions');?></strong></td></tr>
</tbody>
</table>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment