Подписи на осях + исключено двойное обновление графика.
authorRoman Bazalevsky <rvb@rvb.name>
Fri, 13 Dec 2019 13:36:07 +0000 (16:36 +0300)
committerRoman Bazalevsky <rvb@rvb.name>
Fri, 13 Dec 2019 13:36:07 +0000 (16:36 +0300)
web/squid.js

index dbcf25b9aafe0a6e3b1ce5cacbbbcf66bf9e0573..58a95420deab7eb50d6278f71d84e9169a180561 100644 (file)
@@ -1,6 +1,6 @@
 urlbase="./api.php"
 
-refresh = 500
+refresh = 1000
 online_history = 60
 
 graph_colors = [
@@ -39,6 +39,9 @@ timer = null
 
 assigned_colors = []
 
+current_time = null
+time_labels = []
+
 var d = new Date();
 var curr_day = d.getDate();
 var curr_month = d.getMonth() + 1;
@@ -402,11 +405,18 @@ function AddTraffic(label,b) {
 function ProduceOnline(res) {
 
   if (!online_traffic) {
+    current_time = null
     online_traffic = []
+    time_labels = []
+    cur = Date.now()
+    for (i = 1; i<=online_history; i++) {
+      cur = cur - refresh
+      time_labels.unshift(cur)
+    }
     config = {
       type: 'line',
       data: {
-        labels: new Array(online_history).fill('*'),
+        labels: time_labels,
         datasets: online_traffic,
       },
       options: {
@@ -416,6 +426,7 @@ function ProduceOnline(res) {
         responsive: true,
         scales: {
           xAxes: [{
+            type: 'time',
             scaleLabel: {
               display: true,
             }
@@ -427,6 +438,7 @@ function ProduceOnline(res) {
             },
             scaleLabel: {
               display: true,
+              labelString: "Скорость, Кбит/c"
             }
           }]
         }
@@ -434,13 +446,23 @@ function ProduceOnline(res) {
     }
     DrawGraph(config) 
   }
+
+  var delta
+
+  if (current_time) {
+    delta = (Date.now() - current_time)/1000
+  } else {
+    delta = 1
+  }
+  
+  current_time = Date.now()
+
+  time_labels.shift()
+  time_labels.push(current_time)
   
   for (i = online_traffic.length-1; i>=0; i--) {
     online_traffic[i].data.shift()
     online_traffic[i].data.push(0)
-    if (Math.max.apply(null,online_traffic[i].data) == 0) {
-      online_traffic.splice(i,1)
-    }
   }
   
   dictionary = res["dictionary"]
@@ -483,11 +505,17 @@ function ProduceOnline(res) {
     
     new_online_connections[idx] = bytes
     
-    AddTraffic(username,bytes-last_bytes)
+    AddTraffic(username,8*(bytes-last_bytes)/(1024*delta))
   }
   
   online_connections = new_online_connections
 
+  for (i = online_traffic.length-1; i>=0; i--) {
+    if (Math.max.apply(null,online_traffic[i].data) == 0) {
+      online_traffic.splice(i,1)
+    }
+  }
+
   headerHTML = Macro("header-row",{DATA:MergeTH(dictionary)})
   
   reportHTML = Macro("report-table",{HEADER:headerHTML,LINES:innerHTML})
@@ -589,7 +617,7 @@ function Rerun() {
 }
 
 function Online() {
-  timer = null
+  CancelRefresh()
   RefreshFilterPane()
   var header = document.getElementById("report-name") 
   header.innerText = "Активные соединения"