AmazonS3
tcp/443
Open service 52.222.214.43:443 ยท web.laundryos.eu
2026-01-09 18:16
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 21258
Connection: close
Date: Fri, 09 Jan 2026 18:16:52 GMT
Last-Modified: Thu, 04 Dec 2025 17:31:50 GMT
ETag: "b6b668935ac586a11f21cf1f45edc746"
x-amz-server-side-encryption: AES256
Accept-Ranges: bytes
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 a23fc047c59f0902384fa94644607c00.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA56-P3
X-Amz-Cf-Id: X7YSi7jGdpf83DqcCS6_T4h8XOPNDV6EXFqf8T9P85Il9H1uv_nTXA==
Page title: LaundryOS
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>LaundryOS</title>
<base href="/" />
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" rel="stylesheet" />
<link href="_content/MudBlazor/MudBlazor.min.css" rel="stylesheet" />
<link rel="apple-touch-icon" sizes="512x512" href="icon-512.png" />
<style>
.loader {
/* animation properties */
animation-name: loading-animation;
animation-duration: 2.5s;
animation-direction: alternate;
animation-iteration-count: infinite;
animation-timing-function: linear;
/* other properties */
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
@keyframes loading-animation {
from {
width: 20%;
top: 48%;
}
to {
width: 50%;
top: 52%;
}
}
div.alert-fix div.justify-sm-start {
align-items: center !important;
}
.text-wrap {
white-space: normal !important;
height: auto !important;
}
</style>
<script src="https://cdn.jsdelivr.net/npm/moment@2.29.1/min/moment.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.4"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-annotation@0.5.7/chartjs-plugin-annotation.min.js"></script>
<!--<script src="ChartJsBlazorInterop.js"></script>-->
<script src="_content/ChartJs.Blazor.Fork/ChartJsBlazorInterop.js"></script>
<script>
window.addAnnotation = function (canvasId, value, borderColor, isHorizontal, borderWidth, label, counter) {
var chart = Object.entries(Chart.instances).find(c => c[1].canvas.id == canvasId)[1];
if (chart.options.annotation == undefined || chart.options.annotation == null) {
chart.options.annotation = {};
}
if (chart.options.annotation.annotations == undefined || chart.options.annotation.annotations == null) {
chart.options.annotation.annotations = [];
}
var aantalStapjes = Math.floor(chart.height / 60);
chart.options.annotation.annotations.push({
"type": "line",
"mode": isHorizontal ? "horizontal" : "vertical",
"scaleID": isHorizontal ? "y-axis-0" : "x-axis-0",
"value": value,
"borderColor": 'black',
"borderWidth": borderWidth,
"fontSize": 10,
borderDash: [2, 2],
// Line Dash Offset
// https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset
borderDashOffset: 5,
"label": {
backgroundColor: "#cecece",
fontColor: "black",
"content": label,
"enabled": true,
"position": "top",
"yAdjust": (counter % aantalStapjes) * 30,
}
});
chart.update();
}
window.addAnnotations = function (canvasIds, values, borderColors, isHorizontals, borderWidths, labels) {
for (var i = 0; i < canvasIds.length; i++) {
for (var j = 0; j < values[0].length; j++) {
window.addAnnotation(canvasIds[i], values[j], borderColors[j], isHorizontals[j], borderWidths[j], labels[j], j);
}
}
}
</script>
<script>
"use strict";
class ChartJsInterop {
constructor() {
this.BlazorCharts = new Map();
}
se