Adding Charts

This commit is contained in:
2023-07-02 19:44:37 +02:00
parent 55c34e9375
commit 4ac2d3d76f
4 changed files with 132 additions and 17 deletions

View File

@@ -7,6 +7,9 @@
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js" integrity="sha384-oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.css" integrity="sha512-/zs32ZEJh+/EO2N1b0PEdoA10JkdC3zJ8L5FTiQu82LR9S/rOQNfQN7U59U9BC12swNeRAz3HSzIL2vpp4fv3w==" crossorigin="anonymous" referrerpolicy="no-referrer"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js" integrity="sha512-d9xgZrVZpmmQlfonhQUvTR7lMPtO7NkZMkA0ABN3PHCbKA5nqylQ/yWlFAyY6hYgdF1Qh6nYiuADWwKB4C2WSw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
</head>
@@ -15,6 +18,8 @@
<body>
<center>
<nav class="navbar navbar-expand-lg bg-body-tertiary shadow">
<div class="container-fluid">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
@@ -52,10 +57,23 @@ Environnement
<br> CPU : {{ full['cpu_number'] }}
<br> vCPU : {{ full['vcpu'] }}
<br> Memory : {{ full['mem_max']}}
<br> Node : {{ node }}
</div></div>
</div>
<div class="col-8">
<div class="card">
<div class="card-header">
Monitor
</div>
<div class="card-body">
<canvas id="canvas"></canvas>
<br>
</div>
</div>
</div>
<br>
<div class="card">
<div class="card-header">
Usage
</div>
@@ -86,8 +104,6 @@ total : {{ full['swap']['total'] }} / used : {{ full['swap']['used'] }} / free :
</div>
</div>
</div>
</div>
<br>
<div class="card">
@@ -126,5 +142,90 @@ total : {{ full[key]['size_total'] }} / used : {{ full[key]['size_used'] }} / fr
</table>
</div>
</div>
<script>
$(document).ready(function () {
const config = {
type: 'line',
data: {
labels: Array(30).fill("0000-00-00 00:00:00"),
datasets: [{
label: "CPU %",
backgroundColor: 'rgb(0, 191, 255)',
borderColor: 'rgb(0, 191, 255)',
data: Array(30).fill(null),
fill: false,
},{
label: "Mem %",
backgroundColor: 'rgb(255,240,100)',
borderColor: 'rgb(255, 240, 100)',
data: Array(30).fill(null),
fill: false,
},{
label: "Swap %",
backgroundColor: 'rgb(255, 20, 100)',
borderColor: 'rgb(255, 20, 100)',
data: Array(30).fill(null),
fill: false,
}],
},
options: {
responsive: true,
title: {
display: false,
},
tooltips: {
mode: 'index',
intersect: false,
},
hover: {
mode: 'nearest',
intersect: true
},
scales: {
xAxes: [{
display: false,
scaleLabel: {
display: true,
labelString: 'Time'
}
}],
yAxes: [{
display: true,
scaleLabel: [{
display: true,
labelString: 'CPU'
},{
display: true,
labelString: 'Mem'
},{
display: true,
labelString: 'Swap'
}]
}]
}
}
};
const context = document.getElementById('canvas').getContext('2d');
const lineChart = new Chart(context, config);
const source = new EventSource("/chart-ressources/{{ node }}");
source.onmessage = function (event) {
const data = JSON.parse(event.data);
if (config.data.labels.length === 30) {
config.data.labels.shift();
config.data.datasets[0].data.shift();
config.data.datasets[1].data.shift();
config.data.datasets[2].data.shift();
}
config.data.labels.push(data.time);
config.data.datasets[0].data.push(data.cpu);
config.data.datasets[1].data.push(data.mem);
config.data.datasets[2].data.push(data.swap);
lineChart.update();
}
});
</script>
</body>
</html>