Einführungen
Datenvisualisierung mit Tabellen und Diagrammen
Erstellen Sie dynamische Tabellen und Diagramme aus Ihren JSON-Daten
Output.Rocks bietet die Möglichkeit, Daten in Tabellen und Diagrammen zu visualisieren. Während Tabellen klassischerweise benutzt werden um Werte eindeutig zu listen und abzurechnen, können sie gleichzeitig Rechenoperationen durchführen und transparent machen.
Diagramme sind dagegen eine gute Wahl um die Entwicklung von Werten im Zeitverlauf zu visualisieren oder die Aufteilung von Anteilen zu veranschaulichen. Dafür stehen eine Vielzahl an Diagrammtypen zur Verfügung.
Tabellen
Grundlegende Tabellensyntax
Die einfachste Methode in Output.Rocks um Tabellen zu erstellen ist die Verwendung Wiederholender Tabellenzeilen (Repeat Row) mit dem <<rr_objektName>> Tag.
Die einfache Wiederholung ermöglicht es, Zeilen einer Tabelle basierend auf einer Datenliste zu wiederholen. Nehmen wir den folgenden Datensatz:
{
"monatsVerbrauch": [
{
"monat": "Januar",
"wert": 450,
"vorjahr": 420
},
{
"monat": "Februar",
"wert": 420,
"vorjahr": 380
},
{
"monat": "März",
"wert": 310,
"vorjahr": 340
},
{
"monat": "April",
"wert": 280,
"vorjahr": 260
}
]
}Daraus können wir in Ihrer Word‑ oder LibreOffice‑Vorlage eine Tabelle erstellen, indem wir die entsprechenden Tags direkt in die Tabellenzellen einfügen. Die visuelle Formatierung (Farben, Rahmen, Schriftarten) legen Sie in der Vorlage fest.
Tabellenzeilen die sich auf den Datensatz beziehen werden wir mit <<rr_objektName>> wiederholen und mit <<er_objektName>> wieder abschließen:
Tabelle die Zeilen für einen Datensatz wiederholt
+---------------+------------------+----------------+
| Monat | Verbrauch (kWh) | Vorjahr (kWh) |
+---------------+------------------+----------------+
| <<rr_monatsVerbrauch>> |
+---------------+------------------+----------------+
| <<monat>> | <<wert>> | <<vorjahr>> |
+---------------+------------------+----------------+
| <<er_monatsVerbrauch>> |
+---------------+------------------+----------------+Die Zeilen mit <<rr_objektName>> und <<er_objektName>> Tags werden in der Ausgabe nicht angezeigt und nur ihre Inhalte gerendert.
Summen und Berechnungen
In der .docx‑Vorlage können Sie direkt in einer Tabelle Rechenoperationen durchführen, wie zum Beispiel die automatische Summierung von Werten oder spezifische Berechnungen für bestimmte Zeilen.
Die vollständige Übersicht aller Tabellenfunktionen, einschließlich Sortierungen und anderer erweiterter Funktionen finden Sie in unter Tabellenfunktionen.
Tabelle mit zeilen-interner und zeilen-übergreifender Berechnung:
<<$gesamtDifferenz=0>>
+---------------+-----------------------------------------------------+
| Monat | Abweichung zum Vorjahr |
+---------------+-----------------------------------------------------+
| <<rr_monatsVerbrauch>> |
+---------------+-----------------------------------------------------+
| <<monat>> | <<$diff={wert - vorjahr}>> |
| | <<$gesamtDifferenz={$gesamtDifferenz+$diff}>> |
| | <<$diff>> kWh |
+---------------+-----------------------------------------------------+
| <<er_monatsVerbrauch>> |
+---------------+-----------------------------------------------------+
| Gesamt | <<$gesamtDifferenz>> kWh |
+---------------+-----------------------------------------------------+In diesem Beispiel werden fortgeschrittene Berechnungstechniken mit Variablen demonstriert:
-
Initialisierung einer Summenvariable: Vor der Tabelle wird mit
<<$gesamtDifferenz=0>>eine Variable für die Gesamtsumme initialisiert. -
Schrittweise Berechnung in jeder Zeile: In jeder Zeile passieren drei Schritte:
- Die Differenz wird als Expression berechnet und in
$diffgespeichert:<<$diff={wert - vorjahr}>> - Die Gesamtdifferenz wird als Expression aktualisiert:
<<$gesamtDifferenz={$gesamtDifferenz+$diff}>> - Der berechnete Differenzwert wird angezeigt:
<<$diff>> kWh
- Die Differenz wird als Expression berechnet und in
-
Ausgabe der akkumulierten Summe: In der Summenzeile wird einfach der Wert der Variable
$gesamtDifferenzausgegeben, die während der Iteration über alle Zeilen aufgebaut wurde.
Diese Technik zeigt, wie Variablen außerhalb und innerhalb wiederholender Abschnitte verwendet werden können, um komplexe Berechnungen durchzuführen. Die Variablen behalten ihren Wert über Iterationen hinweg bei, was für das Aggregieren von Daten besonders nützlich ist.
Weitere Informationen zu mathematischen Funktionen und Variablen finden Sie in der Funktionsdokumentation für numerische Operationen.
- Wichtig: Alle Berechnungen in Output.Rocks müssen als Expressions mit geschweiften Klammern
{...}formatiert werden. - Variablen müssen vor ihrer Verwendung deklariert werden, wie hier mit
$gesamtDifferenz={0}.
Diagramme
Diagramme werden im Diagramm-Editor des Backends unter Vorlagen-Management -> Diagramme verwaltet.
Grundlegende Diagrammverwaltung und Einbettung
Alle dynamisch und individuell erstellen Diagramme von Output.Rocks werden im Diagramm-Editor Backend als JS Objekt erstellt und danach ähnlich wie bei dynamischer Bilderzeugung mit Platzhalter und Bildmarke in eine Vorlage eingefügt.
Die Schritte:
-
Zuerst wird das Diagramm im Werkzeuge -> Diagramm-Editor gestaltet. Nutzen Sie die verschiedenen Vorlagen und Konfigurationsoptionen um das Diagramm zu gestalten. Kopieren Sie die fertige Konfiguration in die Zwischenablage.
-
Unter Vorlagen-Management -> Diagramme legen sie nun das Diagramm mit seinem Identifier an. Im Reiter 'Konfiguration' fügen Sie die Konfiguration aus Schritt 1 ein.
-
In der Vorlage definiert ein Platzhalter-Bild die Maße des Diagramms und wird mit der Bildmarke
img_identifierDesDiagrammsversehen. -
Für System-Events wird das Diagramm zusätzlich der Vorlage zugewiesen. Im Reiter 'Vorlagen' des Diagramm-Editors werden alle zugewiesenen Vorlagen ausgewählt.
Ihre dynamischen Daten können Sie direkt aus dem Payload oder als Expressions und Variablen in die Konfiguration einbetten.
Verwenden Sie die Standard-Platzhalter wie <<payloadObjekt.wert>> oder <<$variable>> oder die Expression-Syntax <<{ausdruck}>> für berechnete Werte.
Diagramme können auch reziprok Vorlagen über deren Konfiguration im Backend unter Vorlagen-Management -> Templates unter dem Reiter 'Diagramme' zugewiesen werden.
Einfaches Liniendiagramm
Hier ein einfaches Beispiel für ein Liniendiagramm, das den Verbrauch über mehrere Monate darstellt:
{
"type": "line",
"data": {
"labels": ["Januar", "Februar", "März", "April", "Mai", "Juni"],
"datasets": [
{
"label": "Monatlicher Verbrauch",
"backgroundColor": "rgba(54, 162, 235, 0.5)",
"borderColor": "rgb(54, 162, 235)",
"data": [420, 460, 310, 280, 260, 180]
}
]
},
"options": {
"title": {
"display": true,
"text": "Verbrauchsentwicklung"
}
}
}Konfiguration
Die Chart.js Bibliothek, die für Output.Rocks Diagramme genutzt wird, bietet umfangreiche Konfigurationsmöglichkeiten zur visuellen Anpassung Ihrer Datenvisualisierungen. Während die grundlegende Struktur mit Typ, Daten und Optionen ausreicht, können fortgeschrittene Anpassungen Ihre Diagramme noch aussagekräftiger gestalten. Der Werkzeuge -> Diagramm-Editor bietet eine einfache Möglichkeit, die Diagramm-Konfiguration über eine Vielzahl von Vorlagen zu ändern und zu testen.
Chart.js Konfigurationsübersicht
| Konfigurationsschlüssel | Daten-Syntax | Erläuterung |
|---|---|---|
| type | "line" (oder "bar", "pie", "doughnut", "radar") | Definiert den grundlegenden Diagrammtyp |
| data.labels | ["Jan", "Feb", "März"] | X-Achsen-Labels oder Kategoriebezeichnungen |
| data.datasets[].label | "Verbrauch 2023" | Bezeichnung für die Datenreihe in der Legende |
| data.datasets[].data | [450, 420, 350] | Die eigentlichen Datenpunkte für die Visualisierung |
| data.datasets[].backgroundColor | "rgba(54, 162, 235, 0.5)" | Hintergrundfarbe der Datenpunkte oder Balken |
| data.datasets[].borderColor | "rgb(54, 162, 235)" | Rahmen-/Linienfarbe im Diagramm |
| data.datasets[].borderWidth | 1 | Breite des Rahmens in Pixeln |
| data.datasets[].fill | false, true | Ob der Bereich unter einer Linie gefüllt werden soll |
| options.title.display | true, false | Ob der Diagrammtitel angezeigt werden soll |
| options.title.text | "Verbrauchsübersicht" | Text des Diagrammtitels |
| options.title.position | "top", "left", "bottom", "right" | Position des Titels |
| options.legend.display | true, false | Ob die Legende angezeigt werden soll |
| options.legend.position | "top", "left", "bottom", "right" | Position der Legende |
| options.scales.y.beginAtZero | true, false | Ob die Y-Achse bei Null beginnen soll |
| options.scales.y.title.text | "Verbrauch in kWh" | Beschriftung der Y-Achse |
| options.scales.x.title.text | "Monat" | Beschriftung der X-Achse |
| options.plugins.datalabels.display | true, false | Ob Datenbeschriftungen angezeigt werden sollen |
Noch mehr Konfigurationsoptionen finden Sie in der Referenzdokumentation.
Dynamische Daten
Der große Vorteil von Output.Rocks Diagrammen ist die Möglichkeit, Diagramme vollständig dynamisch mit Ihren Daten zu befüllen. Dafür verwenden Sie Output.Rocks Platzhalter und Expressions direkt in der Chart.js Konfiguration.
{
"type": "bar",
"data": {
"labels": ["<<monatsVerbrauch[0].monat>>",
"<<monatsVerbrauch[1].monat>>",
"<<monatsVerbrauch[2].monat>>",
"<<monatsVerbrauch[3].monat>>"],
"datasets": [
{
"label": "Aktueller Verbrauch",
"backgroundColor": "rgba(54, 162, 235, 0.5)",
"borderColor": "rgb(54, 162, 235)",
"data": [<<monatsVerbrauch[0].wert>>,
<<monatsVerbrauch[1].wert>>,
<<monatsVerbrauch[2].wert>>,
<<monatsVerbrauch[3].wert>>],
"fill": false
},
{
"label": "Vorjahresverbrauch",
"backgroundColor": "rgba(153, 102, 255, 0.5)",
"borderColor": "rgb(153, 102, 255)",
"data": [<<monatsVerbrauch[0].vorjahr>>,
<<monatsVerbrauch[1].vorjahr>>,
<<monatsVerbrauch[2].vorjahr>>,
<<monatsVerbrauch[3].vorjahr>>],
"fill": false
},
{
"label": "Differenz zum Vorjahr",
"backgroundColor": "rgba(255, 99, 132, 0.5)",
"borderColor": "rgb(255, 99, 132)",
"data": [<<monatsVerbrauch[0].wert>> - <<monatsVerbrauch[0].vorjahr>>,
<<monatsVerbrauch[1].wert>> - <<monatsVerbrauch[1].vorjahr>>,
<<monatsVerbrauch[2].wert>> - <<monatsVerbrauch[2].vorjahr>>,
<<monatsVerbrauch[3].wert>> - <<monatsVerbrauch[3].vorjahr>>],
"fill": false
}
]
},
"options": {
"title": {
"display": true,
"text": "Verbrauchsvergleich vs. Vorjahr"
}
}
}Erläuterung der dynamischen Komponenten
Bei der Integration dynamischer Daten in Chart.js-Konfigurationen müssen einige besondere Aspekte beachtet werden!
-
Direkte Verwendung von Payload-Platzhaltern:
- In numerischen Kontexten können Payload-Platzhalter direkt verwendet werden:
<<monatsVerbrauch[0].wert>> - Keine zusätzlichen Kennzeichnungen sind nötig
- Datensets werden als Arrays erwartet, wie in diesem Beispiel:
"data": [<<wert1>>, <<wert2>>, <<wert3>>]
- In numerischen Kontexten können Payload-Platzhalter direkt verwendet werden:
-
String-Deklarationen in Labels:
- Labels werden als Strings (auch im Array) in doppelten Anführungszeichen deklariert:
"<<monatsVerbrauch[0].monat>>" - Die Platzhalter werden innerhalb dieser Strings positioniert und bei der Verarbeitung durch die tatsächlichen Werte ersetzt
- Labels werden als Strings (auch im Array) in doppelten Anführungszeichen deklariert:
-
Berechnungen bzw. Expressions:
- Für Berechnungen können die Werte direkt mit Operatoren verbunden werden
- Geschweifte Klammern
{...}wie in Vorlagen‑Syntax sind nicht nötig- Operationen können aber durch einfache Klammern
(...)strukturiert werden - Beispiel:
(<<wert1>> - <<wert2>>) * 12
- Operationen können aber durch einfache Klammern
Die Nutzung dynamischer Daten in Output.Rocks Diagrammen eröffnet völlig neue Möglichkeiten für Ihre Kundenkommunikation. Statt statischer Diagramme können Sie jetzt individualisierte Visualisierungen erstellen, die genau die relevanten Daten Ihrer Kunden darstellen. Besonders bei wiederkehrenden Berichten wie Verbrauchsabrechnungen, Portfolioanalysen oder Vertragsentwicklungen bieten dynamische Diagramme einen erheblichen Mehrwert.
Fehlerbehandlung
Bei der Arbeit mit dynamischen Diagrammen und Tabellen gibt es einige Tipps zu beachten, um Fehler zu vermeiden:
Stellen Sie als erstes sicher, dass Ihre JSON-Struktur korrekt ist... und korrekt referenziert wird.
- In Tabellen sollten Sie für den Fall leerer Datensätze vorsorgen und bedingte Abschnitte verwenden:
<<cs_{monatsVerbrauch == null || monatsVerbrauch.size() == 0}>>
Keine Verbrauchsdaten verfügbar
<<es_>>-
Prüfen Sie die Datentypen (Zahlen vs. Strings) und deren Formatierung (
123vs."123"). -
Testen Sie Ihre Tabellen und Diagramme immer mit realistischen Datenmengen im Editor, um unerwartete Formatierungsprobleme zu vermeiden
-
Testen Sie mögliche Edge Cases (leere oder unvollständige Datensätze, sehr große Zahlen)