Dynamische Zeichnungen und Diagramme: Mit SVG! Sie
möchten dynamische Zeichnungen, Diagramme oder
Geschäftsgrafiken erstellen und die vorhandenen Möglichkeiten
(SVG-Diagramme) von Application Express reichen Ihnen nicht aus? Kein
Problem! In
der letzten Ausgabe haben Sie erfahren, wie Sie einfache,
dynamische SVG-Zeichnungen in Ihre Application Express-Anwendungen
einbetten können. Heute nutzen Sie dieses Wissen, um - basierend
auf Tabellendaten - eigene SVG-Diagramme wie in Abbildung 1 zu
erstellen. Vorab jedoch: Um dies zu erreichen, muss etwas PL/SQL-Code
geschrieben werden. Abb.1: Das Ziel: Eigene SVG-Grafiken Abbildung
2 zeigt die Tabellendaten, für die das Diagramm erstellt werden
soll. Das Skript, mit dem die Tabelle erstellt wurde, finden Sie hier. Das Einkommen soll auf der X-Achse, das Alter auf der Y-Achse
aufgetragen werden. Zustimmung soll grün, Ablehnung rot und
Unentschlossenheit (SQL NULL) grau dargestellt werden. Abb.2: Ausgangssituation: Tabellendaten Zunächst
macht es Sinn, sich ein wenig Gedanken um die Aufteilung der
Fläche im SVG-Diagramm zu machen (Abbildung 3). Neben der
eigentlichen Diagrammfläche
wird Platz für die Beschriftung der X- und Y-Achsen sowie für
einen Rahmen um alles benötigt. Abb.3: Aufteilung der Diagrammfläche ... Im
ersten Schritt sollen die Achsen und die
Diagrammfläche gezeichnet werden. Die Größe des
Diagramms, des Rahmens und der Beschriftungsfläche wird
zunächst in Variablen hinterlegt. Lassen Sie den folgenden
Code im
SQL-Workshop laufen. Dabei wird eine Prozedur namens SHOW_UMFRAGE_SVG erzeugt. Die
Prozedur definiert zunächst Variablen für die
Größe des Diagramms (v_svg_width, v_svg_height), die
Rahmenbreite (v_svg_margin) und die Größe der
Achsenbeschriftung (v_svg_textbar_left, v_svg_textbar_bottom). Mit
diesen Angaben werden dann die Achsen des Diagramms mit der SVG-Direktive <line> (Dokumentation)
gezeichnet. Zum Abschluß wird die Diagrammfläche mit <rect> (Dokumentation) grau gefüllt. Um dieses Diagramm in Ihrer
Application Express-Anwendung darstellen zu können, benötigen
Sie nun einen Anwendungsprozeß und eine Region. Navigieren
Sie zu den Gemeinsamen Komponenten, dort zu den Anwendungsprozessen und
hinterlegen Sie dort einen Bedarfsgesteuerten Anwendungsprozeß
(Abbildung 4). Als PL/SQL-Code hinterlegen Sie einfach nur einen Aufruf
der soeben angelegten PL/SQL-Prozedur SHOW_UMFRAGE_SVG.
Abb.4: Code des Bedarfsgesteuerten Anwendungsprozesses Erzeugen Sie nun auf Ihrer Anwendungsseite eine neue HTML-Region und geben Sie als HTML-Quelltext folgendes ein: Nun können Sie die Seite starten - Das Ergebnis sollte wie folgt aussehen: Abb.5: Ergebnis des 1. Schritts: Zeichnen der Achsen und der Diagrammfläche Nun
geht es daran, die Achsen zu beschriften. Geben Sie das jeweilige
Minimum und Maximum für den Moment ebenfalls noch in Variablen vor. Die
Prozedur lässt sich später natürlich noch erweitern, so dass diese
Werte aus den Tabellendaten automatisch ermittelt werden. Nehmen Sie
also in den DECLARE-Block der Prozedur noch auf ... Zum Beschriften des Diagramms wird die SVG-Direktive <text> (Dokumentation) verwendet. Fügen Sie in den Programmblock vor der Zeile htp.p('</svg>'); folgendes ein: Zur Ausrichtung und Formatierung des jeweiligen Textes kennt <text> verschiedene Attribute. Hier wurden folgende verwendet: - dominant-baseline (Dokumentation):
Dieses
Attribut gibt die Baseline des Textes, also eine Linie, anhand derer
der Text vertikal ausgerichtet wird, an. Der Wert hanging
bedeutet, dass die einzelnen Buchstaben quasi aufgehangen werden; man
könnte es also auch übersetzen in "Vertikale Ausrichtung
nach oben". - text-anchor (Dokumentation):
...
beschreibt die horizontale Ausrichtung des Textes. Die effektive
Auswirkung ist Linksbündig, zentriert oder
rechtsbündig. - writing-mode (Dokumentation):
... beschreibt, wie der Text geschrieben werden soll . Der hier verwendete Wert tb-rl meint, dass von oben nach unten und dann von links nach rechts geschrieben werden soll. Standardmäßig wird lr-tb geschrieben, also von links nach rechts und dann von oben nach unten.
Schauen Sie sich danach die Anwendungsseite erneut im Browser an. Das Ergebnis sollte in etwa wie folgt aussehen: Abb.6: Ergebnis des 2. Schritts: Beschriftung des Diagramms Nun
ist die "Vorarbeit" gemacht. Dem Diagramm fehlen nur noch die
eigentlichen Datenpunkte. Definieren Sie zunächst ein paar
Hilfsvariablen: v_circle_width gibt an, wie groß ein Datenpunkt dargestellt werden soll (5 Pixel). v_svg_x_null und v_svg_y_null
speichern die Null-Linie der jeweiligen Achse, also an welcher
Pixelposition das Minimum der jeweiligen Achse aufgetragen wird. v_svg_x_step und v_svg_y_step
speichern die Schrittweite - sie geben an, wieviel Pixeln eine
Erhöhung desjeweiligen Wertes um 1 entspricht. Die Werte werden
zunächst ermittelt ... ... und dann beim Zeichnen der Datenpunkte genutzt. An diesem Punkt kommt endlich die SQL-Abfrage auf die Tabelle UMFRAGE zum Einsatz. Die Punkte werden mit der Directive <circle> (Dokumentation) als Kreise mit einem Durchmesser von 5 Pixeln dargestellt. Das endgültige Ergebnis sieht dann wie folgt aus: Abb.7: Endergebnis: Das fertige Diagramm Sie finden den vollständigen Code der Prozedur hier.
Wie Sie sehen, können Sie durch entsprechende Programmierung
beliebige Diagrammtypen erzeugen - der Phantasie sind keine Grenzen
gesetzt. Zurück
zur
Community-Seite |