mirror of
https://github.com/StefBuwalda/dashboard_test.git
synced 2025-10-30 03:09:59 +00:00
log.dateCreated didn't contain any UTC metadata so now log.dateCreatedUTC() return the datetime object with correct metadata
This commit is contained in:
15
app.py
15
app.py
@@ -8,7 +8,7 @@ from pathlib import Path
|
|||||||
from models import service, log
|
from models import service, log
|
||||||
from typing import Any, Optional, cast
|
from typing import Any, Optional, cast
|
||||||
import json
|
import json
|
||||||
from datetime import timedelta
|
from datetime import datetime, timezone, timedelta
|
||||||
from config import timeout
|
from config import timeout
|
||||||
|
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ def prepare_chart_data(
|
|||||||
if len(logs) <= 0: # Return empty if there are no logs
|
if len(logs) <= 0: # Return empty if there are no logs
|
||||||
return ([], [])
|
return ([], [])
|
||||||
|
|
||||||
x = [logs[0].dateCreated.isoformat()]
|
x = [logs[0].dateCreatedUTC().isoformat()]
|
||||||
y = [logs[0].ping]
|
y = [logs[0].ping]
|
||||||
|
|
||||||
for i in range(1, len(logs)):
|
for i in range(1, len(logs)):
|
||||||
@@ -27,13 +27,13 @@ def prepare_chart_data(
|
|||||||
log2 = logs[i - 1]
|
log2 = logs[i - 1]
|
||||||
|
|
||||||
# Check if the gap in points exceeds a threshold
|
# Check if the gap in points exceeds a threshold
|
||||||
if (abs(log1.dateCreated - log2.dateCreated)) > timedelta(
|
if (abs(log1.dateCreatedUTC() - log2.dateCreatedUTC())) > timedelta(
|
||||||
milliseconds=1.5 * (timeout + 1000)
|
milliseconds=1.5 * (timeout + 1000)
|
||||||
):
|
):
|
||||||
x.append(log2.dateCreated.isoformat())
|
x.append(log2.dateCreatedUTC().isoformat())
|
||||||
y.append(None)
|
y.append(None)
|
||||||
|
|
||||||
x.append(log1.dateCreated.isoformat())
|
x.append(log1.dateCreatedUTC().isoformat())
|
||||||
y.append(log1.ping)
|
y.append(log1.ping)
|
||||||
return (x, y)
|
return (x, y)
|
||||||
|
|
||||||
@@ -83,10 +83,15 @@ def chart(id: int):
|
|||||||
return abort(code=403)
|
return abort(code=403)
|
||||||
x, y = prepare_chart_data(logs=logs)
|
x, y = prepare_chart_data(logs=logs)
|
||||||
|
|
||||||
|
now = datetime.now(timezone.utc)
|
||||||
|
max_ = now
|
||||||
|
min_ = now - timedelta(hours=1)
|
||||||
return render_template(
|
return render_template(
|
||||||
"chart.html",
|
"chart.html",
|
||||||
dates=x,
|
dates=x,
|
||||||
values=json.dumps(y),
|
values=json.dumps(y),
|
||||||
|
min=min_.isoformat(),
|
||||||
|
max=max_.isoformat(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,12 +22,19 @@
|
|||||||
const data = {
|
const data = {
|
||||||
labels: chartDates,
|
labels: chartDates,
|
||||||
datasets: [{
|
datasets: [{
|
||||||
label: 'Example Data',
|
label: 'Ping',
|
||||||
data: {{ values }},
|
data: {{ values }},
|
||||||
}]
|
}]
|
||||||
};
|
};
|
||||||
|
|
||||||
const ctx = document.getElementById('myChart').getContext('2d');
|
const ctx = document.getElementById('myChart').getContext('2d');
|
||||||
|
// Current time in UTC
|
||||||
|
const nowUTC = new Date();
|
||||||
|
|
||||||
|
// One hour ago in UTC
|
||||||
|
const oneDayAgoUTC = new Date(nowUTC.getTime() - 24 * 60 * 60 * 1000);
|
||||||
|
const min = "{{ min }}"
|
||||||
|
const max = "{{ max }}"
|
||||||
new Chart(ctx, {
|
new Chart(ctx, {
|
||||||
type: 'line',
|
type: 'line',
|
||||||
data: data,
|
data: data,
|
||||||
@@ -36,8 +43,14 @@
|
|||||||
x: {
|
x: {
|
||||||
type: 'time', // Important for datetime axis
|
type: 'time', // Important for datetime axis
|
||||||
time: {
|
time: {
|
||||||
unit: 'day'
|
unit: 'hour',
|
||||||
|
tooltipFormat: 'HH:mm:ss',
|
||||||
|
displayFormats: {
|
||||||
|
hour: 'HH:mm'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
min: min,
|
||||||
|
max: max
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,10 +30,13 @@ class log(db.Model):
|
|||||||
"log_id": self.id,
|
"log_id": self.id,
|
||||||
"service_id": self.service_id,
|
"service_id": self.service_id,
|
||||||
"ping": self.ping,
|
"ping": self.ping,
|
||||||
"dateCreated": self.dateCreated,
|
"dateCreated": self.dateCreatedUTC(),
|
||||||
"timeout": self.timeout,
|
"timeout": self.timeout,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def dateCreatedUTC(self) -> datetime:
|
||||||
|
return self.dateCreated.replace(tzinfo=timezone.utc)
|
||||||
|
|
||||||
|
|
||||||
class service(db.Model):
|
class service(db.Model):
|
||||||
id: int = db.Column(db.Integer, primary_key=True) # TODO: Switch to UUID
|
id: int = db.Column(db.Integer, primary_key=True) # TODO: Switch to UUID
|
||||||
|
|||||||
@@ -39,11 +39,7 @@ async def check_service(client: aiohttp.ClientSession, s: service) -> log:
|
|||||||
try:
|
try:
|
||||||
ctx = SimpleNamespace()
|
ctx = SimpleNamespace()
|
||||||
status = await ping(client=client, s=s, ctx=ctx)
|
status = await ping(client=client, s=s, ctx=ctx)
|
||||||
print(status)
|
|
||||||
print(vars(ctx))
|
|
||||||
if status == 200:
|
if status == 200:
|
||||||
print("test")
|
|
||||||
print(ctx.duration_ms)
|
|
||||||
return log(service_id=s.id, ping=int(ctx.duration_ms))
|
return log(service_id=s.id, ping=int(ctx.duration_ms))
|
||||||
else:
|
else:
|
||||||
return log(service_id=s.id, ping=None)
|
return log(service_id=s.id, ping=None)
|
||||||
|
|||||||
Reference in New Issue
Block a user