2022-10-13 17:45:33 +03:00

195 lines
5.9 KiB
JavaScript

const automode = document.getElementById('m_auto');
const manmode = document.getElementById('m_man');
const s_pressure = document.getElementById('pressure'); //slider
const s_speed = document.getElementById('speed'); //slider
const g_pressure = document.getElementById('get_press');
const g_speed = document.getElementById('get_speed');
const g_co = document.getElementById('get_co');
const g_temp = document.getElementById('get_temp');
const g_rh = document.getElementById('get_rh');
const canvas = document.getElementById('dataChart');
s_pressure.addEventListener('input', e =>{
e.preventDefault();
updateChart();
})
automode.addEventListener('click', () =>{
s_pressure.disabled = false;
document.getElementById('set_press').disabled = false;
s_speed.disabled = true;
document.getElementById('set_speed').disabled = true;
})
manmode.addEventListener('click', () =>{
s_pressure.disabled = true;
document.getElementById('set_press').disabled = true;
s_speed.disabled = false;
document.getElementById('set_speed').disabled = false;
})
const data = {
//labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
datasets: [{
label: 'Temperature',
yAxisID: 'y0',
//data: [12, 19, 3, 5, 2, 3],
backgroundColor: [
'rgba(255, 99, 132, 1)'//,
// 'rgba(54, 162, 235, 0.2)',
// 'rgba(255, 206, 86, 0.2)',
// 'rgba(75, 192, 192, 0.2)',
// 'rgba(153, 102, 255, 0.2)',
// 'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255, 99, 132, 1)'//,
//'rgba(54, 162, 235, 1)',
//'rgba(255, 206, 86, 1)',
//'rgba(75, 192, 192, 1)',
//'rgba(153, 102, 255, 1)',
//'rgba(255, 159, 64, 1)'
],
//borderWidth: 1,
tension: 0.05,
pointRadius: 1
},
{
label: 'Pressure',
yAxisID: 'y1',
//data: [12, 19, 3, 5, 2, 3],
backgroundColor: [
// 'rgba(255, 99, 132, 1)'//,
'rgba(54, 162, 235, 1)',
// 'rgba(255, 206, 86, 0.2)',
// 'rgba(75, 192, 192, 0.2)',
// 'rgba(153, 102, 255, 0.2)',
// 'rgba(255, 159, 64, 0.2)'
],
borderColor: [
// 'rgba(255, 99, 132, 1)'//,
'rgba(54, 162, 235, 1)',
//'rgba(255, 206, 86, 1)',
//'rgba(75, 192, 192, 1)',
//'rgba(153, 102, 255, 1)',
//'rgba(255, 159, 64, 1)'
],
//borderWidth: 1,
tension: 0.05,
pointRadius: 1
},
{
label: 'Fan speed',
yAxisID: 'y2',
//data: [12, 19, 3, 5, 2, 3],
backgroundColor: [
// 'rgba(255, 99, 132, 1)'//,
// 'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 1)',
// 'rgba(75, 192, 192, 0.2)',
// 'rgba(153, 102, 255, 0.2)',
// 'rgba(255, 159, 64, 0.2)'
],
borderColor: [
// 'rgba(255, 99, 132, 1)'//,
//'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
//'rgba(75, 192, 192, 1)',
//'rgba(153, 102, 255, 1)',
//'rgba(255, 159, 64, 1)'
],
//borderWidth: 1,
tension: 0.05,
pointRadius: 1
}]
};
const config = {
type: 'line',
data,
options: {
scales: {
x: {
ticks: {
display: false
}
},
y0: { // temp
type: 'linear',
position: 'left',
id: 'y-0',
beginAtZero: true,
min: 0,
max:50,
ticks: {
stepSize: 5,
color: 'rgba(255, 99, 132, 1)'
}
},
y1: { //press
type: 'linear',
beginAtZero: true,
min: 0,
max: 120,
position: 'left',
id: 'y-1',
ticks: {
stepSize: 10,
color: 'rgba(54, 162, 235, 1)'
}
},
y2: { //speed
type: 'linear',
position: 'left',
id: 'y-2',
beginAtZero: true,
min: 0,
max: 100,
ticks: {
stepSize: 10,
color: 'rgba(255, 206, 86, 1)'
}
}
}
//aspectRatio: 1
}
};
const myChart = new Chart(canvas, config);
function updateChart(){
async function fetchData(){
const response = await fetch('data.json');
const datapoints = await response.json();
console.log(datapoints);
return datapoints;
};
fetchData().then(datapoints => {
const time = datapoints.map((time, index) => {
return time.nr;
});
const temp = datapoints.map((temp, index) => {
return temp.temp;
});
const pressure = datapoints.map((temp, index) => {
return temp.pressure;
});
const fanspeed = datapoints.map((temp, index) => {
return temp.speed;
});
console.log(time);
console.log(temp);
myChart.config.data.labels = time;
myChart.config.data.datasets[0].data = temp;
myChart.config.data.datasets[1].data = pressure;
myChart.config.data.datasets[2].data = fanspeed;
myChart.update();
})
};