optimized dtc-table in WebUI
This commit is contained in:
		| @@ -3,6 +3,13 @@ const jsonFilePath = "static/dtc_table.json"; | ||||
| var dtcState = {}; | ||||
|  | ||||
| async function processDTCNotifications(dtcArray) { | ||||
|   // Entferne DTCs aus dtcState, die nicht im dtcArray enthalten sind | ||||
|   for (var key in dtcState) { | ||||
|     if (!dtcArray.some((dtc) => parseInt(dtc.split(",")[1]) == key)) { | ||||
|       delete dtcState[key]; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (dtcArray.length === 0 || dtcArray[0] == "0") { | ||||
|     dtcState = {}; | ||||
|     return; | ||||
| @@ -31,14 +38,14 @@ async function processDTCNotifications(dtcArray) { | ||||
|  | ||||
|       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 !== dtcState[errorCode].activity) { | ||||
|           dtcState[errorCode].activity = activity; | ||||
|           if (activity === 1) showNotification(description, severity); | ||||
|         } | ||||
|       } else { | ||||
|         // DTC ist neu, Zustand speichern und Benachrichtigung anzeigen | ||||
|         dtcState[errorCode] = activity; | ||||
|         showNotification(description, severity); | ||||
|         // DTC ist neu, Zustand speichern und wenn active, Benachrichtigung anzeigen | ||||
|         dtcState[errorCode] = { activity: activity }; | ||||
|         if (activity === 1) showNotification(description, severity); | ||||
|       } | ||||
|     } catch (error) { | ||||
|       console.error("Error processing DTC:", error); | ||||
| @@ -89,14 +96,15 @@ async function showDTCModal(event) { | ||||
|   } catch (error) { | ||||
|     console.error("Fehler beim Abrufen der Beschreibung:", error); | ||||
|     modal.find(".modal-title").text("Fehler"); | ||||
|     modal.find(".dtc-desc").text("DTC-Beschreibung konnte nicht geladen werden"); | ||||
|     modal | ||||
|       .find(".dtc-desc") | ||||
|       .text("DTC-Beschreibung konnte nicht geladen werden"); | ||||
|   } | ||||
|  | ||||
|   // Modal anzeigen | ||||
|   modal.modal("show"); | ||||
| } | ||||
|  | ||||
|  | ||||
| function fillDTCTable(dtcArray) { | ||||
|   // Referenz auf das Tabellen-Element | ||||
|   var table = document.getElementById("dtc_table"); | ||||
| @@ -108,11 +116,28 @@ function fillDTCTable(dtcArray) { | ||||
|     tablediv.hidden = true; | ||||
|     table.innerHTML = ""; | ||||
|     return; | ||||
|   } else { | ||||
|     // Zeige das Tabellen-Div, wenn DTC vorhanden sind | ||||
|     tablediv.hidden = false; | ||||
|   } | ||||
|  | ||||
|   // Prüfen, ob sich der Inhalt der Tabelle geändert hat | ||||
|   var tableContentChanged = false; | ||||
|   for (var i = 0; i < dtcArray.length; i++) { | ||||
|     var dtcInfo = dtcArray[i].split(","); | ||||
|     var errorCode = parseInt(dtcInfo[1]); | ||||
|     var activity = parseInt(dtcInfo[3]); | ||||
|  | ||||
|     if (!dtcState[errorCode] || dtcState[errorCode].activity !== activity) { | ||||
|       tableContentChanged = true; | ||||
|       break; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (!tableContentChanged) { | ||||
|     return; | ||||
|   } | ||||
|  | ||||
|   // Zeige das Tabellen-Div, wenn DTC vorhanden sind | ||||
|   tablediv.hidden = false; | ||||
|  | ||||
|   // Tabelle leeren, bevor sie neu gefüllt wird | ||||
|   table.innerHTML = ""; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user