diff --git a/metric_visualization/js/charts.js b/metric_visualization/js/charts.js new file mode 100644 index 0000000..d5520b5 --- /dev/null +++ b/metric_visualization/js/charts.js @@ -0,0 +1,118 @@ +"use strict"; + +/** + * @module charts + * Visualization logic module for metric_visualization + */ + +/** + * Zeichnet ein Linien- oder Scatter-Diagramm basierend auf Δt-Daten. + * @param {Array} analysisData - Analyse-Daten mit {run_id, t_index_visible, t_gate_read, delta_t}. + * @param {string} [chartContainerId="chart-area"] - ID des Containers zur Anzeige des Charts. + */ +export function renderTimeSeriesChart(analysisData, chartContainerId = "chart-area") { + if (!Array.isArray(analysisData) || analysisData.length === 0) { + console.warn("renderTimeSeriesChart: No analysis data provided."); + return; + } + + const container = document.getElementById(chartContainerId); + if (!container) { + console.error(`Container with id '${chartContainerId}' not found.`); + return; + } + + container.innerHTML = ""; + const canvas = document.createElement("canvas"); + canvas.setAttribute("role", "img"); + canvas.setAttribute("aria-label", "Δt-Zeitverlauf Diagramm"); + container.appendChild(canvas); + + const context = canvas.getContext("2d"); + const labels = analysisData.map(d => d.t_index_visible); + const deltaTValues = analysisData.map(d => d.delta_t); + + const data = { + labels, + datasets: [ + { + label: "Δt Werte", + data: deltaTValues, + borderColor: "#007acc", + backgroundColor: "rgba(0,122,204,0.2)", + pointBackgroundColor: highlightNegativeDeltaT(analysisData), + fill: false, + tension: 0.2 + } + ] + }; + + const config = { + type: "line", + data, + options: { + responsive: true, + maintainAspectRatio: false, + plugins: { + tooltip: { + callbacks: { + label: context => { + const { label, parsed } = context; + return `t=${label}: Δt=${parsed}`; + } + } + }, + legend: { + display: true, + labels: { + color: "#222" + } + } + }, + scales: { + x: { + title: { + display: true, + text: "Zeitindex" + }, + ticks: { + color: "#333" + } + }, + y: { + title: { + display: true, + text: "Δt" + }, + ticks: { + color: "#333" + } + } + } + } + }; + + // Chart.js wird hier erwartet, global verfügbar zu sein (z. B. über