|
Minidiagramme in einem APEX-Bericht mit HTML5 und SVG
| Erscheinungsmonat |
APEX-Version |
Datenbankversion |
| Februar 2012 |
ab 4.0 |
ab 10.2 |
Der eine oder andere Entwickler kennt die Berichts-Formatmaske PCT_GRAPH mit der sich
sehr schnell und elegant eine Mini-Balkengrafik in einen APEX-Bericht setzen lässt.
Abbildung 1: APEX-Bericht mit Formatmaske PCT_GRAPH
Allerdings sind die Möglichkeiten hier doch sehr eingegrenzt. Mehr als der einfache
Balken ist nicht drin - das einzige, was sich noch festlegen lässt, ist die Breite und
die verwendeten Farben. Schöner wäre es doch, wenn auch mehr Grafikelemente möglich wären ...
Abbildung 2: APEX-Bericht mit HTML5-Grafikelementen
In diesem Tipp erfahren Sie, wie Sie solche "Minidiagramme" mit Hilfe von SVG und HTML5
in Ihre APEX-Berichte aufnehmen können. Mit dem neuen Standard HTML5 kommt SVG "zurück", denn
es wird Teil des von den Browsern unterstützten HTML Sprachumfangs und damit nativ vom Browser
unterstützt. Bereits heute wird SVG von den aktuellen Versionen von Firefox (4.0 und höher),
Chrome oder Safari unterstützt - die Diagramme werden ohne Plugin direkt dargestellt. Der
Microsoft Internet Explorer unterstützt SVG erst ab Version 9.0 - für die im Unternehmen vielfach
noch eingesetzten Versionen 6, 7 und 8 gibt es allerdings ein JavaScript-"Plugin", welches das SVG
in Flash "umwandelt", so dass es mit dem Adobe Flash Player dargestellt werden kann.
Nutzer von Firefox (ab 4.0), Chrome oder Safari können den Tipp also ohne weiteres
umsetzen und können dann im Kapitel SVG auf einer APEX-Seite: Erste Schritte
weiterlesen. Wer den Internet
Explorer 6, 7 oder 8 oder ältere Firefox-Versionen (3.x) unterstützen möchte, sollte vorher das nächste Kapitel
SVG in älteren Browsern lesen.
SVG in älteren Browsern
Ältere Browser wie Firefox 3.x oder Microsoft Internet Explorer 6, 7 oder 9 können in HTML eingebettetes SVG nicht direkt darstellen;
wenn man nichts tut, bleiben die entsprechenden Stellen der APEX-Anwendung leer. Abhilfe
schafft die OpenSource Software
svgweb, die von der Webseite bei
code.google.org
heruntergeladen werden kann. Die Software wird als JavaScript-Bibliothek in die Webseite
eingebunden. Wenn sie einen Browser erkennt, der SVG nicht direkt unterstützt, wird sie
aktiv und "wandelt" das SVG in Flash um - so dass der Adobe Flash Player die Darstellung übernehmen
kann. Kann das SVG vom Browser direkt dargestellt werden, wird nichts unternommen. Weitere
Details können der
SVGWEB-Webseite entnommen werden. Laden Sie also
das svgweb-Paket herunter (Abbildung 3).
Abbildung 3: Download des Pakets "svgweb"
Packen Sie das ZIP Archiv auf Ihrem lokalen PC aus und betrachten Sie den
Unterordner src (Abbildung 4).
Abbildung 4: Das ausgepackte ZIP-Archiv "svgweb"
Die hier enthaltenen Dateien (ohne den Ordner tools) müssen auf den
APEX-Webserver unterhalb des Verzeichnisses images gelegt werden. Das Hochladen
in den APEX Workspace als Statische Dateien reicht nicht aus. Wenn Sie also
den Apache Webserver mit mod_plsql verwenden ...
- schauen sie nach, auf welches Betriebssystemverzeichnis der Alias /i/ abgebildet ist
- navigieren Sie dorthin, legen Sie darin ein Unterverzeichnis svgweb an
- kopieren Sie die Dateien dort hinein.
Wenn Sie das PL/SQL Embedded Gateway verwenden, brauchen Sie zumindest zeitweilig DBA-Privilegien ...
- Legen Sie sich einen Datenbankuser für die FTP-Kommunikation an - nennen Sie bspw. APXFTP
- Geben Sie dem neuen Datenbankuser die Rolle XDBADMIN
- Aktivieren Sie den FTP-Zugang zum Datenbankrepository: Rufen Sie dazu DBMS_XDB.SETFTPPORT auf. Als Port bietet sich die 2100 an.
- Nun können Sie eine DOS-Kommandozeile öffnen, ins Verzeichnis src Ihrer svgweb-Ordnerstruktur wechseln und die Inhalte wie folgt ins APEX-Repository hochladen.
In APEX
können Sie die Dateien dann mit #APP_IMAGES#svgweb/{dateiname} angesprochen werden. Als
nächstes navigieren Sie zu Ihrer Anwendung und dort zum verwendeten Seitentemplate.
Im Template Header binden Sie die svgweb-Bibliothek nach dem JavaScript-Code für APEX
selbst wie in Abbildung 5 dargestellt, ein.
Abbildung 5: Einbinden der svgweb Bibliothek ins Seitentemplate der APEX-Anwendung
Damit sind die Vorbereitungen abgeschlossen. Ihre SVG-Grafiken sollten nun auch im
Internet Explorer dargestellt werden. Zeit, die ersten Schritte mit HTML5 und
SVG zu unternehmen ...
SVG auf einer APEX-Seite: Erste Schritte ...
Der erste Versuch einer SVG-Grafik wird noch recht einfach: Legen Sie eine HTML-Region
an - in diese werden wir eine erste SVG-Grafik hineinsetzen - das ist im Moment zwar noch
alles statisch, aber Sie bekommen den ersten Eindruck, wie das funktioniert. Hinterlegen
Sie diesen HTML- bzw. SVG-Code als Regionsquelle.
Starten Sie die Seite - sie sollte wie in Abbildung 6 aussehen ... und wenn Sie die
"svgweb" Bibliothek richtig eingespielt haben, wird das auch vom Internet Explorer
dargestellt.
Abbildung 6: Der erste Schritt mit SVG - eine kleine Grafik auf der APEX-Seite
Dieser Tipp soll nun keine Referenz für den SVG Befehlsumfang sein - hierfür sind
im Internet zahlreiche Tutorials vorhanden. Als Beispiel sei das Tutorial auf der
Webseite
www.w3schools.com genannt. Dort können Sie
sich einen guten Überblick über die vorhandenen Direktiven verschaffen. Die Einbindung
sollte immer wie in obigem Codebeispiel erfolgen ...
Solche statischen SVG-Diagramme sind jedoch für die Anwendungsentwicklung nicht
sehr hilfreich. Als nächstes wollen wir das XML für die SVG-Grafik also dynamisch
mit Daten aus Tabellen generieren ...
Dynamische SVG-Diagramme mit PL/SQL
Der nächste Schritt ist nun das Erstellen einer PL/SQL-Prozedur, die, anhand von Parametern, das XML für ein
SVG-Minidiagramm dynamisch generiert. Wir beginnen mit einem sehr einfachen Beispiel, einem Kreis mit
variabler Größe und Farbe.
In einem Bericht kann die Funktion nun wie folgt verwendet werden.
Zunächst arbeitet der Bericht noch nicht ganz wie gewünscht (Abbildung 7) ...
Abbildung 7: SVG-Anweisungen in einem APEX-Bericht - man sieht zunächst XML ..."
Der Cross-Site-Skripting-Schutz ist standardmäßig aktiv - so wie es sein soll. Damit das
SVG-XML nicht nur angezeigt, sondern interpretiert wird, müssen Sie die Berichtsspalte
umstellen. Navigieren Sie zu den Berichtsattributen und dort zur Spalte SAL_CIRCLE . Stellen
Sie dann, wie in Abbildung 8 dargestellt, die Darstellungsweise auf Standardberichtsspalte um.
Abbildung 8: Berichtsspalte auf "Standardberichtsspalte" umstellen
Nun wird das SVG korrekt angezeigt ...
Abbildung 9: APEX-Bericht mit SVG-Elementen
Nun können Sie noch weiter gehen. Spielen Sie mit dem folgenden Code das PL/SQL-Paket HTML5_SVG_OBJECTS ein; damit
werden Ihnen neben Kreisen noch einige weitere Diagrammtypen angeboten. Natürlich steht es Ihnen frei, dieses Paket
nach eigenen Bedürfnissen anzupassen oder zu erweitern ...
Die Nutzung des Pakets in einem APEX-Bericht könnte dann so aussehen. Erzeugen Sie einen
neuen Bericht mit dieser SQL-Abfrage ...
Das Ergebnis sollte dann wie in Abbildung 10 aussehen ...
Abbildung 10: Das Ergebnis: Ein APEX-Bericht mit SVG-Minidiagrammen
SVG und HTML5 gehören mit Sicherheit zu den interessantesten Trends bei der Entwicklung von Web-Anwendungen,
denn es werden völlig neue Möglichkeiten bei der Gestaltung der Nutzeroberflächen geschaffen. Auch die Einschränkungen,
die sich bei Verwendung von Flash bei mobilen Endgeräten ergeben, treffen auf SVG und HTML5 nicht zu - die hier gezeigten
Diagramme funktionieren auch auf gängigen mobilen Geräten, da SVG von diesen typischerweise unterstützt wird.
Zurück zur Community-Seite
|