diff --git a/firmware/data/bottom.js b/firmware/data/bottom.js index 8459e2f..9dfd153 100644 --- a/firmware/data/bottom.js +++ b/firmware/data/bottom.js @@ -190,7 +190,7 @@ break; } } if (lowerIndex === -1 || upperIndex === -1) { -console.log("Error: Current time not found in time array and not between two elements in time array. Fixing it..."); +console.log("Warning: Current time not found in time array and not between two elements in time array. Fixing it..."); lowerIndex = 0; upperIndex = 1; var tmp1 = time[0].split(':'); @@ -336,6 +336,7 @@ button.classList.remove("error"); button.classList.add("pure-button-primary"); button.innerHTML = "OFF"; }, 2000); +showToast('Error while sending data to server.', 'error'); console.log('Error while sending data to server.'); } } @@ -376,6 +377,7 @@ button.classList.remove("error"); button.classList.add("pure-button-primary"); button.innerHTML = "ON"; }, 2000); +showToast('Error while sending data to server.', 'error'); console.log('Error while sending data to server.'); } } @@ -457,22 +459,42 @@ loadTCGraphData(); function createJsonFromTable() { var tableRows = document.querySelectorAll("table tr"); var tcdata = []; +var timeArr = []; for (var i = 1; i <= 10; i++) { var row = document.getElementById("hour" + i).parentNode; var hour = parseInt(row.cells[0].childNodes[0].value); var min = parseInt(row.cells[1].childNodes[0].value); +timeArr.push(hour * 60 + min); var ch1 = Math.round(parseInt(row.cells[2].childNodes[0].value) * 2.55); var ch2 = Math.round(parseInt(row.cells[3].childNodes[0].value) * 2.55); var ch3 = Math.round(parseInt(row.cells[4].childNodes[0].value) * 2.55); var ch4 = Math.round(parseInt(row.cells[5].childNodes[0].value) * 2.55); tcdata.push({hour: hour, min: min, ch1: ch1, ch2: ch2, ch3: ch3, ch4: ch4}); } +for (var i = 0; i < timeArr.length - 1; i++) { +if (timeArr[i] >= timeArr[i + 1]) { +showToast('Error while verifying timing control data. The timestamps are not incrementing.', 'error'); +return null; +} +} var currentTime = {hour: new Date().getHours(), min: new Date().getMinutes()}; var jsonData = {tcdata: tcdata, currenttime: currentTime}; return JSON.stringify(jsonData); } function sendDataToServer() { var jsonData = createJsonFromTable(); +if (!jsonData) { +button.classList.remove("pure-button-primary"); +button.classList.add("error"); +button.innerHTML = "Error!"; +setTimeout(function () { +button.classList.remove("error"); +button.classList.add("pure-button-primary"); +button.innerHTML = "save"; +}, 2000); +console.log('Error while generating timing control data.'); +return; +} var urlEncodedData = encodeURIComponent(jsonData); var url = 'http://{{IP_ADDRESS}}/tc_data_blocks_store?data=' + urlEncodedData; var xhr = new XMLHttpRequest(); @@ -499,6 +521,7 @@ button.classList.remove("error"); button.classList.add("pure-button-primary"); button.innerHTML = "save"; }, 2000); +showToast('Error while sending timing control data to server.', 'error'); console.log('Error while sending data to server.'); } } @@ -506,3 +529,19 @@ console.log('Error while sending data to server.'); xhr.send(); loadTCGraphData(); } +function showToast(message, type) { +const toast = document.querySelector('.toast'); +if (toast) { +toast.textContent = message; +toast.classList.remove('success', 'error'); +if (type === 'success') { +toast.classList.add('success'); +} else if (type === 'error') { +toast.classList.add('error'); +} +toast.style.opacity = 1; +setTimeout(() => { +toast.style.opacity = 0; +}, 5000); +} +} diff --git a/firmware/data/index_template_top.html b/firmware/data/index_template_top.html index 66e10a9..10971ee 100644 --- a/firmware/data/index_template_top.html +++ b/firmware/data/index_template_top.html @@ -15,6 +15,7 @@