Работа с датами. Вперед-назад, проверка ограничений.
authorRoman Bazalevsky <rvb@rvb.name>
Mon, 16 Dec 2019 08:14:05 +0000 (11:14 +0300)
committerRoman Bazalevsky <rvb@rvb.name>
Mon, 16 Dec 2019 09:34:25 +0000 (12:34 +0300)
web/api.php
web/index.html
web/squid.js

index 2b700e20b855d3c9b369acd1d4094d6df5eac494..4da8707b54134d0533794522845713cc9cc09de9 100644 (file)
@@ -78,6 +78,8 @@
       $users = exec_query("select id,username as name,alias from users");
       $hosts = exec_query("select id,hostname as name,alias from hosts");
       $data["dictionaries"] = Array( "user_id" => $users, "host_id" => $hosts);
+      $data["online_refresh"] = $online_refresh;
+      $data["online_history"] = $online_history;
 
       break;
 
index 39266c4102cbe815edb5ed3a295f5a742ee4fee2..e3a8f40eea25470401390eaf5ff959d12fc669ec 100644 (file)
@@ -26,6 +26,7 @@
 <div id="report-dates">
 Отчет с: <input id="date-from" type="date" onchange="UpdateDates();"> 
 по: <input id="date-to" type="date" onchange="UpdateDates();">
+<button onclick="DateLeft();">&larr;</button><button onclick="DateRight();">&rarr;</button>
 <span id="filter">
 Фильтр:
 </span>
index 58a95420deab7eb50d6278f71d84e9169a180561..0260b100f068e4d6333a41b41f81e565a5f09b19 100644 (file)
@@ -1,8 +1,5 @@
 urlbase="./api.php"
 
-refresh = 1000
-online_history = 60
-
 graph_colors = [
 "salmon", "lightcoral", "crimson", "red", "darkred", "orangered",
 "gold", "orange", "yellow", "darkkhaki", "lime", "green", "greenyellow",
@@ -42,11 +39,22 @@ assigned_colors = []
 current_time = null
 time_labels = []
 
-var d = new Date();
-var curr_day = d.getDate();
-var curr_month = d.getMonth() + 1;
-var curr_year = d.getFullYear();
-today = curr_year + "-" + curr_month + "-" + curr_day;
+function toDate(d) {
+  var curr_day = d.getDate();
+  if (curr_day<10) { curr_day = '0' + curr_day; }
+  var curr_month = d.getMonth() + 1;
+  if (curr_month<10) { curr_month = '0' + curr_month; }
+  var curr_year = d.getFullYear();
+  return curr_year + "-" + curr_month + "-" + curr_day
+}
+
+function Today() {
+  var dToday = new Date();
+  dToday.setHours(0,0,0,0)
+  return dToday
+}
+
+today = toDate(Today());
 
 date_from = today
 date_to = today
@@ -133,6 +141,9 @@ function UpdatePageProps(props) {
   var logo = document.getElementById("brand");
   logo.innerText = props["site-header"];
 
+  refresh = props["online_refresh"]
+  online_history = props["online_history"]
+
   cats = props["cats"]
 
   for (var i in res["columns"]) { 
@@ -635,6 +646,37 @@ function UpdateDates() {
 
 }
 
+function DateLeft() {
+  UpdateDates()
+  var dFrom = new Date(date_from)
+  var dTo = new Date(date_to)
+  var delta = Math.round(((dTo.getTime() - dFrom.getTime()))/(86400*1000))
+  dTo.setDate(dTo.getDate() - (1 + delta))
+  dFrom.setDate(dFrom.getDate() - (1 + delta))
+  date_from = toDate(dFrom)
+  date_to = toDate(dTo)
+  SetDates()
+}
+
+function DateRight() {
+  dToday = new Date();
+  UpdateDates()
+  var dFrom = new Date(date_from)
+  var dTo = new Date(date_to)
+  var delta = Math.round(((dTo.getTime() - dFrom.getTime()))/(86400*1000))
+  dFrom.setDate(dFrom.getDate() + 1 + delta)
+  dTo.setDate(dTo.getDate() + 1 + delta)
+  if (dTo>Today()) {
+    dTo = Today()
+  }
+  if (dFrom>Today()) {
+    dFrom = Today()
+  }
+  date_from = toDate(dFrom)
+  date_to = toDate(dTo)
+  SetDates()
+}
+
 function SetFilter(name,select) {
   current_filter[name] = select.value;
 }