mirror of
				https://github.com/billz/raspap-webgui.git
				synced 2025-03-01 10:31:47 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			148 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| (function($, _t) {
 | |
|   "use strict";
 | |
| 
 | |
|   /**
 | |
|    * Create a Chart.js barchart.
 | |
|    */
 | |
|   function CreateChart(ctx, labels) {
 | |
|     var barchart = new Chart(ctx,{
 | |
|       type: 'line',
 | |
|       options: {
 | |
|         responsive: true,
 | |
|         scales: {
 | |
|           xAxes: [{
 | |
|             scaleLabel: {
 | |
|               display: true,
 | |
|               labelString: 'date',
 | |
|             },
 | |
|             ticks: {
 | |
|               maxRotation: 90,
 | |
|               minRotation: 80
 | |
|             }
 | |
|           }],
 | |
|           yAxes: [{
 | |
|             id: 'y-axis-1',
 | |
|             type: 'linear',
 | |
|             display: true,
 | |
|             position: 'left',
 | |
|             ticks: {
 | |
|               beginAtZero: true
 | |
|             }
 | |
|           }]
 | |
|         }
 | |
|       },
 | |
|       data: {
 | |
|         labels: labels,
 | |
|         datasets: []
 | |
|       }
 | |
|     });
 | |
| 
 | |
|     return barchart;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Create a jquery bootstrap datatable.
 | |
|    */
 | |
|   function CreateDataTable(placeholder, timeunits) {
 | |
|     $("#"+placeholder).append('<table id="tableBandwidth'+timeunits+
 | |
|       '" class="table table-striped"><thead>'+
 | |
|       '<tr><th>date</th><th>rx</th><th>tx</th></tr></thead><tbody></tbody></table>');
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Figure out which tab is selected and remove all existing charts and then
 | |
|    * construct the proper barchart.
 | |
|    */
 | |
|   function ShowBandwidthChartHandler(e) {
 | |
|     // Remove all chartjs charts
 | |
|     $('#divChartBandwidthhourly').empty();
 | |
|     $('#divChartBandwidthdaily').empty();
 | |
|     $('#divChartBandwidthmonthly').empty();
 | |
|     // Remove all datatables
 | |
|     $('#divTableBandwidthhourly').empty();
 | |
|     $('#divTableBandwidthdaily').empty();
 | |
|     $('#divTableBandwidthmonthly').empty();
 | |
|     // Construct ajax uri for getting the proper data.
 | |
|     var timeunit = $('ul#tabbarBandwidth li.nav-item a.nav-link.active').attr('href').substr(1);
 | |
|     var uri = 'ajax/bandwidth/get_bandwidth.php?';
 | |
|     uri += 'inet=';
 | |
|     uri += encodeURIComponent($('#cbxInterface'+timeunit+' option:selected').text());
 | |
|     uri += '&tu=';
 | |
|     uri += encodeURIComponent(timeunit.substr(0, 1));
 | |
|     var datasizeunits = 'mb';
 | |
|     uri += '&dsu='+encodeURIComponent(datasizeunits);
 | |
|     // Init. datatable html
 | |
|     var datatable = CreateDataTable('divTableBandwidth'+timeunit, timeunit);
 | |
|     // Get data for chart
 | |
|     $.ajax({
 | |
|       url: uri,
 | |
|       dataType: 'json',
 | |
|       beforeSend: function() {
 | |
|         $('#divLoaderBandwidth'+timeunit).show();
 | |
|       }
 | |
|     }).done(function(jsondata) {
 | |
|       $('#divLoaderBandwidth'+timeunit).hide();
 | |
|       // Map json values to label array
 | |
|       var labels = jsondata.map(function(e) {
 | |
|         return e.date;
 | |
|       });
 | |
|       // Init. chart with label series
 | |
|       var barchart = CreateChart('divChartBandwidth'+timeunit, labels);
 | |
|       var dataRx = jsondata.map(function(e) {
 | |
|         return e.rx;
 | |
|       });
 | |
|       var dataTx = jsondata.map(function(e) {
 | |
|         return e.tx;
 | |
|       });
 | |
| 
 | |
|       addData(barchart, dataRx, dataTx, datasizeunits);
 | |
|       $('#tableBandwidth'+timeunit).DataTable({
 | |
|         'searching': false,
 | |
|         'paging': false,
 | |
|         'data': jsondata,
 | |
|         'order': [[ 0, 'ASC' ]],
 | |
|         'columns': [
 | |
|           { 'data': 'date' },
 | |
|           { 'data': 'rx', "title": _t['receive']+' '+datasizeunits.toUpperCase() },
 | |
|           { 'data': 'tx', "title": _t['send']+' '+datasizeunits.toUpperCase() }]
 | |
|       });
 | |
|     }).fail(function(xhr, textStatus) {
 | |
|       if (window.console) {
 | |
|         console.error('server error');
 | |
|       } else {
 | |
|         alert("server error");
 | |
|       }
 | |
|     });
 | |
|   }
 | |
|   /**
 | |
|    * Add data array to datasets of current chart.
 | |
|    */
 | |
|   function addData(chart, dataRx, dataTx, datasizeunits) {
 | |
|     chart.data.datasets.push({
 | |
|       label: 'Receive'+' '+datasizeunits.toUpperCase(),
 | |
|       yAxisID: 'y-axis-1',
 | |
|       borderColor: 'rgba(75, 192, 192, 1)',
 | |
|       backgroundColor: 'rgba(75, 192, 192, 0.2)',
 | |
|       data: dataRx
 | |
|     });
 | |
|     chart.data.datasets.push({
 | |
|       label: 'Send'+' '+datasizeunits.toUpperCase(),
 | |
|       yAxisID: 'y-axis-1',
 | |
|       borderColor: 'rgba(192, 192, 192, 1)',
 | |
|       backgroundColor: 'rgba(192, 192, 192, 0.2)',
 | |
|       data: dataTx
 | |
|     });
 | |
|     chart.update();
 | |
|   }
 | |
| 
 | |
|   $(document).ready(function() {
 | |
|     $('#tabbarBandwidth a[data-toggle="tab"]').on('shown.bs.tab', ShowBandwidthChartHandler);
 | |
|     $('#cbxInterfacehourly').on('change', ShowBandwidthChartHandler);
 | |
|     $('#cbxInterfacedaily').on('change', ShowBandwidthChartHandler);
 | |
|     $('#cbxInterfacemonthly').on('change', ShowBandwidthChartHandler);
 | |
|     ShowBandwidthChartHandler();
 | |
|   });
 | |
| 
 | |
| })(jQuery, t);
 | |
| 
 |