From e913ce6e1ba73d4a01d3ceca67a54dc88be2253c Mon Sep 17 00:00:00 2001 From: Marcel Peterkau Date: Mon, 15 Jan 2024 22:57:08 +0100 Subject: [PATCH] reworked DTC-notification and clearing --- Software/data_src/static/js/dtc_table.js | 85 ++++++++---------------- 1 file changed, 27 insertions(+), 58 deletions(-) diff --git a/Software/data_src/static/js/dtc_table.js b/Software/data_src/static/js/dtc_table.js index 501c5f6..38dfe0e 100644 --- a/Software/data_src/static/js/dtc_table.js +++ b/Software/data_src/static/js/dtc_table.js @@ -3,80 +3,48 @@ const jsonFilePath = "static/dtc_table.json"; var dtcState = {}; function processDTCNotifications(dtcArray) { + if (dtcArray.length === 0 || dtcArray[0] == "0") { + dtcState = {}; + return; + } + for (var i = 0; i < dtcArray.length; i++) { var dtcInfo = dtcArray[i].split(","); - var errorCode = dtcInfo[1]; + var errorCode = parseInt(dtcInfo[1]); var activity = parseInt(dtcInfo[3]); + var severity = parseInt(dtcInfo[2]); + var dtctext; + + getDescriptionForDTCNumber(errorCode, function (error, title, description) { + dtctext = description; + }); + + switch (severity) { + case 1: + severity = "info"; + break; + case 2: + severity = "warning"; + break; + case 3: + severity = "error"; + break; + } if (dtcState[errorCode]) { // Überprüfen, ob sich der Zustand von "previous" auf "active" geändert hat if (activity !== dtcState[errorCode]) { dtcState[errorCode] = activity; - if (activity === 1) showDTCNotification(errorCode); + if (activity === 1) showNotification(dtctext, severity); } } else { // DTC ist neu, Zustand speichern und Benachrichtigung anzeigen dtcState[errorCode] = activity; - showDTCNotification(errorCode); - } - } -} - -function showDTCNotification(dtctext, severity) { - // Überprüfen, ob der Browser die Notification API unterstützt - if ("Notification" in window) { - // Überprüfen, ob der Benutzer bereits Berechtigungen erteilt hat - if (Notification.permission === "granted") { - // Benachrichtigung anzeigen showNotification(dtctext, severity); - } else if (Notification.permission !== "denied") { - // Aufforderung zur Erlaubnis einholen - Notification.requestPermission().then(function (permission) { - if (permission === "granted") { - // Benachrichtigung anzeigen - showNotification(dtctext, severity); - } else { - // Der Benutzer hat die Berechtigung abgelehnt oder das Dialogfeld geschlossen - console.log("Benachrichtigungsberechtigung wurde verweigert."); - } - }); - } else { - // Der Benutzer hat die Berechtigung bereits verweigert - console.log("Benachrichtigungsberechtigung wurde bereits verweigert."); } } } -// Funktion zum Anzeigen der Benachrichtigung -function showNotification(dtctext, severity) { - var severityIcon; - switch (severity) { - case 1: - severityIcon = "static/img/info.png"; - break; - case 2: - severityIcon = "static/img/warn.png"; - break; - case 3: - severityIcon = "static/img/critical.png"; - break; - default: - severityIcon = "static/img/none.png"; - } - - var options = { - body: dtctext, - icon: severityIcon, - }; - - var notification = new Notification("KTM Chain Oiler DTC", options); - - // Optional: Handle Click-Event - notification.onclick = function () { - console.log("Benachrichtigung wurde angeklickt."); - }; -} - function getDescriptionForDTCNumber(number, callback) { fetch(jsonFilePath) .then((response) => response.json()) @@ -135,9 +103,10 @@ function fillDTCTable(dtcArray) { var tablediv = document.getElementById("dtc_container"); // Prüfen, ob DTC vorhanden sind - if (dtcArray.length === 0) { + if (dtcArray.length === 0 || dtcArray[0] == "0") { // Verstecke das Tabellen-Div, wenn keine DTC vorhanden sind tablediv.hidden = true; + table.innerHTML = ""; return; } else { // Zeige das Tabellen-Div, wenn DTC vorhanden sind