Files
IoTManagerWeb/src/widgets/Chart.svelte

111 lines
2.6 KiB
Svelte
Raw Normal View History

2022-08-31 02:14:16 +02:00
<script>
import Chart from "svelte-frappe-charts";
import { onMount } from "svelte";
2022-08-31 22:25:22 +02:00
onMount(async () => {
console.log("[i]", "chart component mounted");
});
2022-08-31 22:25:22 +02:00
export let widget;
2022-08-31 22:25:22 +02:00
2022-08-31 02:14:16 +02:00
let datachart = {
labels: [0, 0],
2022-08-31 02:14:16 +02:00
datasets: [
{
2022-08-31 22:25:22 +02:00
name: widget.descr,
values: [0, 0],
2022-08-31 02:14:16 +02:00
},
],
};
let prevStatus = {};
let firstTime = true;
let labels = [];
let values = [];
let axisOptions = { xAxisMode: "tick", xIsSeries: true };
let lineOptions;
if (widget.pointRadius == "0") {
lineOptions = { regionFill: 1, hideDots: 1, spline: 1 };
} else {
lineOptions = { regionFill: 1, dotSize: 3, spline: 1 };
}
$: widget, collectDataToArr();
2022-08-31 02:14:16 +02:00
function collectDataToArr() {
if (prevStatus !== widget.status && !firstTime) {
if (Array.isArray(widget.status)) {
2022-09-18 19:26:23 +02:00
//console.log("[i]", "=======================================================");
prevStatus = widget.status;
for (let i = 0; i < widget.status.length; i++) {
2022-09-26 01:29:52 +02:00
//if (i === 0 && widget.status[i].x === 0 && widget.status[i].y1 === 0) {
// clearCart();
// widget.status = [];
// console.log("[i]", "clear cart data");
// return;
//}
if (i === 0) {
labels[i] = getDDMM(widget.status[i].x);
} else {
labels[i] = getHHMM(widget.status[i].x);
}
values[i] = [widget.status[i].y1];
}
datachart = {
labels: labels,
datasets: [
{
name: widget.descr,
values: values,
},
],
};
}
2022-08-31 02:14:16 +02:00
}
firstTime = false;
2022-08-31 02:14:16 +02:00
}
2022-08-31 22:25:22 +02:00
function getHHMM(timestamp) {
var date = new Date(timestamp * 1000);
return ("0" + date.getHours()).slice(-2) + ":" + ("0" + date.getMinutes()).slice(-2);
2022-08-31 02:14:16 +02:00
}
function getDDMM(timestamp) {
var date = new Date(timestamp * 1000);
let day = date.getDate();
let month = date.getMonth() + 1;
let year = date.getFullYear();
return day + "." + month + "." + year;
}
function clearCart() {
widget.status = [];
labels = [];
values = [];
datachart = {
labels: [0, 0],
datasets: [
{
name: widget.descr,
values: [0, 0],
},
],
};
}
2022-08-31 02:14:16 +02:00
</script>
2022-09-10 02:59:03 +02:00
<div class="text-center">
<!-- svelte-ignore a11y-label-has-associated-control -->
<label class="inline-block italic align-top text-center text-gray-500 txt-sz">{!widget.descr ? "" : widget.descr}</label>
</div>
<Chart data={datachart} type="line" lineOptions={lineOptions} axisOptions={axisOptions} height="200" padding="0px" />