85 lines
2.3 KiB
JavaScript
85 lines
2.3 KiB
JavaScript
import { mockTemperatureLogs } from "../../mockdata/temperature-logs.mockdata.js"; // Import data
|
|
|
|
const xValues = mockTemperatureLogs.map((log) =>
|
|
new Date(log.date).toLocaleString()
|
|
); // Full Date labels
|
|
const yValues = mockTemperatureLogs.map((log) => log.temperature); // Temperature values
|
|
buildTable(mockTemperatureLogs);
|
|
new Chart("myChart", {
|
|
type: "line",
|
|
data: {
|
|
labels: xValues,
|
|
datasets: [
|
|
{
|
|
fill: false,
|
|
lineTension: 0.4,
|
|
backgroundColor: "rgba(0,0,255,1.0)",
|
|
borderColor: "rgba(0,0,255,0.1)",
|
|
data: yValues,
|
|
},
|
|
],
|
|
},
|
|
options: {
|
|
tooltips: {
|
|
callbacks: {
|
|
title: function (tooltipItem) {
|
|
return `Date: ${tooltipItem[0].label}`;
|
|
},
|
|
label: function (tooltipItem) {
|
|
return `Temperature: ${tooltipItem.value}°C`;
|
|
},
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
function buildTable(data) {
|
|
var table = document.getElementById(`TemperatureTable`);
|
|
data.forEach((log) => {
|
|
var averageTemp = (log.tempHigh + log.tempLow) / 2.0;
|
|
var color;
|
|
if (log.temperature > log.tempHigh) {
|
|
color = "tempHigh";
|
|
} else if (
|
|
log.temperature < log.tempHigh &&
|
|
log.temperature > averageTemp
|
|
) {
|
|
color = "tempMidHigh";
|
|
} else if (log.temperature < log.tempLow) {
|
|
color = "tempLow";
|
|
} else if (log.temperature > log.tempLow && log.temperature < averageTemp) {
|
|
color = "tempMidLow";
|
|
} else {
|
|
color = "tempNormal";
|
|
}
|
|
var row = ` <tr>
|
|
<td>Name</td>
|
|
<td class="${color}">${log.temperature}</td>
|
|
<td>${log.date}</td>
|
|
<td class="tempHigh">${log.tempHigh}</td>
|
|
<td class="tempLow">${log.tempLow}</td>
|
|
</tr>`;
|
|
table.innerHTML += row;
|
|
});
|
|
}
|
|
|
|
// Get the modal
|
|
var modal = document.getElementById("chartModal");
|
|
var btn = document.getElementById("myBtn");
|
|
var span = document.getElementsByClassName("close")[0];
|
|
btn.onclick = function () {
|
|
modal.style.display = "block";
|
|
};
|
|
|
|
// When the user clicks on <span> (x), close the modal
|
|
span.onclick = function () {
|
|
modal.style.display = "none";
|
|
};
|
|
|
|
// When the user clicks anywhere outside of the modal, close it
|
|
window.onclick = function (event) {
|
|
if (event.target == modal) {
|
|
modal.style.display = "none";
|
|
}
|
|
};
|