From a2aa30212139636afc4ef4716b9bbdb5bbf9a629 Mon Sep 17 00:00:00 2001 From: Marcel Peterkau Date: Fri, 31 May 2024 12:50:01 +0200 Subject: [PATCH] optimized dtc-table in WebUI --- Software/data_src/static/js/dtc_table.js | 45 ++++++++++++++++++------ 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/Software/data_src/static/js/dtc_table.js b/Software/data_src/static/js/dtc_table.js index 602a794..59ee06e 100644 --- a/Software/data_src/static/js/dtc_table.js +++ b/Software/data_src/static/js/dtc_table.js @@ -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 = "";