reworked DTC-notification and clearing
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user