Compare commits

...

3 Commits

4 changed files with 37 additions and 20 deletions

View File

@ -15,7 +15,7 @@
<body> <body>
<div class="topnav"> <div class="topnav">
<a class="active" href="/home/index.html">Home</a> <a class="active" href="/home">Home</a>
<div style="display: flex; justify-content: flex-end;"> <div style="display: flex; justify-content: flex-end;">
<a href="/devices">Devices</a> <a href="/devices">Devices</a>
<a href="/profile">Profile</a> <a href="/profile">Profile</a>

View File

@ -4,6 +4,13 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<title>Temperature Alarm</title> <title>Temperature Alarm</title>
<link rel="stylesheet" href="/styles/frontpage.css"> <link rel="stylesheet" href="/styles/frontpage.css">
<script type="module">
import { isLoggedIn } from "./shared/utils.js";
if (isLoggedIn()) {
location.href = "/home";
}
</script>
</head> </head>
<body> <body>
<main> <main>

View File

@ -42,8 +42,8 @@ function buildTable(data) {
data.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime()); data.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
// TODO allow showing more than 50 by e.g. clicking // TODO allow showing more than 50 by e.g. clicking
data = data.slice(0, 50); data = data.slice(0, 50);
data.forEach((log) => { data.forEach((log) => {
var averageTemp = (log.tempHigh + log.tempLow) / 2.0; var averageTemp = (log.tempHigh + log.tempLow) / 2.0;
@ -115,10 +115,10 @@ async function init() {
x: new Date(log.date).getTime(), x: new Date(log.date).getTime(),
y: log.temperature, y: log.temperature,
})), })),
parsing: false,
})), })),
}, },
options: { options: {
parsing: false,
plugins: { plugins: {
tooltip: { tooltip: {
callbacks: { callbacks: {
@ -127,6 +127,8 @@ async function init() {
}, },
decimation: { decimation: {
enabled: true, enabled: true,
algorithm: "lttb",
samples: window.innerWidth / 2,
}, },
}, },
scales: { scales: {

View File

@ -15,34 +15,42 @@ export async function request(method, path, body = null) {
headers, headers,
body: body ? JSON.stringify(body) : undefined, body: body ? JSON.stringify(body) : undefined,
}) })
.then(async response => { .then(async response => {
try { if (response.status === 401) {
const json = await response.json(); location.href = "/login";
}
if (response.ok) return resolve(json); try {
const json = await response.json();
if (json.error) return reject(json.error); if (response.ok) return resolve(json);
if (json.message) return reject(json.message); if (json.error) return reject(json.error);
if (json.title) return reject(json.title); if (json.message) return reject(json.message);
if (json.errors) return reject(Object.values(json.errors)[0][0]); if (json.title) return reject(json.title);
} finally {
reject("Request failed with HTTP code " + response.status); if (json.errors) return reject(Object.values(json.errors)[0][0]);
} } finally {
}) reject("Request failed with HTTP code " + response.status);
.catch(err => reject(err.message)); }
})
.catch(err => reject(err.message));
}); });
} }
export function logout() { export function logout() {
localStorage.removeItem("user"); localStorage.removeItem("user");
document.cookie = "auth-token="; document.cookie = "auth-token=";
window.location.href = "/"; window.location.href = "/";
} }
export function getUser() { export function getUser() {
return JSON.parse(localStorage.getItem("user")); return JSON.parse(localStorage.getItem("user"));
} }
export function isLoggedIn() {
return document.cookie.match(/\bauth-token=/) && localStorage.getItem("user");
}