Artikel

Mit Echarts, Bootstrap und Tabulator zur maßgeschneiderten Datenvisualisierung (3/3)

PHP

Im letzten Teil unserer Serie über Bootstrap, Tabulator und ECharts konzentrieren wir uns auf die Integration von ECharts für interaktive Diagramme. Wir zeigen Ihnen, wie Sie Daten aus einer Tabulator-Tabelle als Diagramme darstellen und anpassen können.


ECharts einbinden

Voraussetzungen

Stellen Sie sicher, dass ECharts in Ihrem Projekt eingebunden ist. Fügen Sie die folgende Zeile in den <head> Ihres HTML-Dokuments ein:

<script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>

Chart-Container hinzufügen

Der Chart wird in einem separaten Tab dargestellt. Fügen Sie den folgenden Container zu Ihrem HTML hinzu (falls noch nicht geschehen):

<div id="chart" style="width: 100%; height: 400px;"></div>

Daten-Endpunkt für das Diagramm

Der Daten-Endpunkt liefert JSON-Daten für eine Bestellnummer. Hier ein einfaches PHP-Skript, in dem über einen Zeitraum von 12 Perioden zufällige Werte generiert werden.

<?php
// data-endpoint.php
header('Content-Type: application/json');

// Bestellnummern definieren
$bestellnummern = ["11223", "67890", "12345"];
$data = [];

// Daten für jede Bestellnummer generieren
foreach ($bestellnummern as $nummer) {
    $werte = [];

    // 12 Werte erstellen
    for ($i = 1; $i <= 12; $i++) {
        $werte[] = [
            "nummer" => $i,
            "wert" => rand(1000, 10000)
        ];
    }

    // Daten für die aktuelle Bestellnummer speichern
    $data[$nummer] = $werte;
}

// Überprüfen, ob eine Bestellnummer angefragt wurde
if (isset($_GET['bestellnummer'])) {
    $bestellnummer = $_GET['bestellnummer'];
    if (array_key_exists($bestellnummer, $data)) {
        echo json_encode($data[$bestellnummer]);
    } else {
        http_response_code(404);
        echo json_encode(["error" => "Bestellnummer nicht gefunden"]);
    }
} else {
    http_response_code(400);
    echo json_encode(["error" => "Bestellnummer fehlt"]);
}

Chart initialisieren

Initialisieren Sie das ECharts-Diagramm. Die Darstellung wird erst später mit Daten befüllt:

// Chart Initialisierung
const chart = echarts.init(document.getElementById("chart"));
chart.setOption({
	title: { text: "Daten zum Titel", left: "center" },
	tooltip: { trigger: "axis" },
	xAxis: { type: "category", data: [] },
	yAxis: { type: "value" },
	series: [{ name: "Wert", type: "line", data: [], areaStyle: {} }]
});

Daten in das Diagramm laden

Mit einem Doppelklick auf eine Zeile der Tabelle sollen die entsprechenden Daten im Diagramm angezeigt werden. Fügen Sie den Event-Listener hinzu:

// Event Listener für Doppelklick
table.on("rowDblClick", function (e, row) {
	const data = row.getData();
	const bestellnummer = data.bestellnummer;

	// Zum Chart-Tab wechseln
	const tab2Link = document.getElementById("tab2-link");
	const tab2 = new bootstrap.Tab(tab2Link);
	tab2.show();

	// Sicherstellen, dass der Chart die richtige Größe hat
	setTimeout(() => {
		chart.resize();
	}, 300); // Leichte Verzögerung, um den Wechsel abzuwarten

	// Daten für den Chart laden
	fetch(`data-endpoint.php?bestellnummer=${bestellnummer}`)
		.then(response => {
			if (!response.ok) {
				throw new Error("Fehler beim Laden der Daten");
			}
			return response.json();
		})
		.then(serverData => {
			const labels = serverData.map(item => `Periode ${item.nummer}`);
			const values = serverData.map(item => item.wert);

			// Chart aktualisieren
			chart.setOption({
				title: { text: `Daten für: ${data.produkt}` },
				xAxis: { data: labels },
				series: [{ data: values }]
			});
		})
		.catch(error => {
			alert("Fehler beim Laden der Daten: " + error.message);
		});
});

Finales Ergebnis

Nach diesen Schritten haben Sie:

  1. Eine Bootstrap-Benutzeroberfläche mit Tabs.
  2. Eine Tabulator-Tabelle mit Doppelklick-Events.
  3. Ein interaktives ECharts-Diagramm, das Daten aus der Tabelle visualisiert.

Dieses einfache Beispiel lässt sich leicht erweitern, um weitere Datenquellen, Diagrammtypen und Benutzerinteraktionen zu integrieren.

Viel Erfolg bei Ihrer Datenvisualisierung!

0 Kommentare