2022-08-31 02:14:16 +02:00
|
|
|
<script>
|
|
|
|
|
import Chart from "svelte-frappe-charts";
|
2022-09-11 01:30:38 +02:00
|
|
|
import { onMount } from "svelte";
|
2022-08-31 22:25:22 +02:00
|
|
|
|
2022-09-11 01:30:38 +02:00
|
|
|
onMount(async () => {
|
|
|
|
|
console.log("[i]", "chart component mounted");
|
|
|
|
|
});
|
2022-08-31 22:25:22 +02:00
|
|
|
|
2022-09-11 01:30:38 +02:00
|
|
|
export let widget;
|
2022-08-31 22:25:22 +02:00
|
|
|
|
2022-08-31 02:14:16 +02:00
|
|
|
let datachart = {
|
2022-09-18 18:11:50 +02:00
|
|
|
labels: [0, 0],
|
2022-08-31 02:14:16 +02:00
|
|
|
datasets: [
|
|
|
|
|
{
|
2022-08-31 22:25:22 +02:00
|
|
|
name: widget.descr,
|
2022-09-18 18:11:50 +02:00
|
|
|
values: [0, 0],
|
2022-08-31 02:14:16 +02:00
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
};
|
|
|
|
|
|
2022-09-18 18:11:50 +02:00
|
|
|
let prevStatus = {};
|
2022-09-11 01:30:38 +02:00
|
|
|
|
2022-09-18 18:11:50 +02:00
|
|
|
let firstTime = true;
|
2022-09-11 01:30:38 +02:00
|
|
|
|
2022-09-18 18:11:50 +02:00
|
|
|
let labels = [];
|
|
|
|
|
let values = [];
|
|
|
|
|
|
|
|
|
|
let axisOptions = { xAxisMode: "tick", xIsSeries: true };
|
|
|
|
|
let lineOptions;
|
2022-09-11 01:30:38 +02:00
|
|
|
if (widget.pointRadius == "0") {
|
|
|
|
|
lineOptions = { regionFill: 1, hideDots: 1, spline: 1 };
|
|
|
|
|
} else {
|
|
|
|
|
lineOptions = { regionFill: 1, dotSize: 3, spline: 1 };
|
|
|
|
|
}
|
|
|
|
|
|
2022-09-18 18:11:50 +02:00
|
|
|
$: widget, collectDataToArr();
|
2022-08-31 02:14:16 +02:00
|
|
|
|
2022-08-31 23:46:43 +02:00
|
|
|
function collectDataToArr() {
|
2022-09-18 18:11:50 +02:00
|
|
|
if (prevStatus !== widget.status && !firstTime) {
|
|
|
|
|
if (Array.isArray(widget.status)) {
|
2022-09-18 19:26:23 +02:00
|
|
|
//console.log("[i]", "=======================================================");
|
2022-09-18 18:11:50 +02:00
|
|
|
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;
|
|
|
|
|
//}
|
|
|
|
|
|
2022-09-18 18:11:50 +02:00
|
|
|
if (i === 0) {
|
|
|
|
|
labels[i] = getDDMM(widget.status[i].x);
|
|
|
|
|
} else {
|
|
|
|
|
labels[i] = getHHMM(widget.status[i].x);
|
|
|
|
|
}
|
|
|
|
|
values[i] = [widget.status[i].y1];
|
2022-09-01 12:51:17 +02:00
|
|
|
}
|
2022-09-08 23:35:58 +02:00
|
|
|
|
|
|
|
|
datachart = {
|
|
|
|
|
labels: labels,
|
|
|
|
|
datasets: [
|
|
|
|
|
{
|
|
|
|
|
name: widget.descr,
|
|
|
|
|
values: values,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
};
|
2022-09-01 01:56:23 +02:00
|
|
|
}
|
2022-08-31 02:14:16 +02:00
|
|
|
}
|
2022-09-18 18:11:50 +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
|
|
|
}
|
2022-09-11 01:30:38 +02:00
|
|
|
|
2022-09-18 18:11:50 +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;
|
|
|
|
|
}
|
|
|
|
|
|
2022-09-11 01:30:38 +02:00
|
|
|
function clearCart() {
|
2022-09-18 18:11:50 +02:00
|
|
|
widget.status = [];
|
|
|
|
|
|
|
|
|
|
labels = [];
|
|
|
|
|
values = [];
|
|
|
|
|
|
2022-09-11 01:30:38 +02:00
|
|
|
datachart = {
|
2022-09-18 18:11:50 +02:00
|
|
|
labels: [0, 0],
|
2022-09-11 01:30:38 +02:00
|
|
|
datasets: [
|
|
|
|
|
{
|
|
|
|
|
name: widget.descr,
|
2022-09-18 18:11:50 +02:00
|
|
|
values: [0, 0],
|
2022-09-11 01:30:38 +02:00
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
};
|
|
|
|
|
}
|
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>
|
2022-09-18 18:11:50 +02:00
|
|
|
|
|
|
|
|
<Chart data={datachart} type="line" lineOptions={lineOptions} axisOptions={axisOptions} height="200" padding="0px" />
|