APEX umożliwia tworzenie wykresów Flash AnyChart oraz HTML. Proces generowania wykresów przy użyciu interfejsu programowania APEX jest żmudny i nie daje nam pełnej kontroli nad zawartością. Źródłem danych przedstawionych na wykresie wygenerowanym przez interfejs może być zapytanie SQL lub funkcja PL/SQL zwracająca zapytanie SQL. Chciałbym przedstawić tu alternatywny sposób generowania wykresów AnyChart przy użyciu procedury PL/SQL oraz JavaScript.
W APEX dostępnych jest kilka darmowych rodzajów wykresów AnyChart:
- Column chart,
- Line Chart,
- Bar Chart,
- Range-Bar Chart,
- Range-Column Chart,
- Stacked Bar Chart,
- Stacked Column chart,
- 100% Stacked Column Chart,
- Candlestick Chart,
- 100% Stacked Bar Chart,
- Pie Chart,
- Doughnut Chart,
- Circular Gauge,
- Scatter Chart.
Pozostałe typy wykresów dostępne są po wykupieniu dodatkowej licencji.
Procedura PL/SQL generująca plik XML
Alternatywny proces generowania wykresów zaczynamy od stworzenia procedury PL/SQL, która będzie tworzyła plik XML wykresu.
Przykładem jest wykres liniowy przedstawiający zarobki pracowników pobrane z tablicy „emp”.
Uprawnienia do procedury wykresXML
Następnie musimy nadać uprawnienia wykonywania procedury wykresXML dla użytkownika APEX_PUBLIC_USER.
Aby to zrobić należy:
- Zalogować się do bazy danych z uprawnieniami systemowymi;
1sqlplus "/ as sysdba"
- Nadać uprawnienia do uruchamiania procedury wykresXML dla apex_public_user.
1grant execute on wykresXML to apex_public_user;
Region HTML
Na stronie, na której chcemy umieścić wykres, tworzymy region HTML. Źródłem regionu HTML jest kod JavaScript generujący wykres.
Dla generowanego wykresu ustawiamy naszą procedurę jako źródłowy plik XML:
1 2 | var plikXML = „#OWNER#.wykresXML”; wykres.setXMLFile(plikXML); |
Otrzymany wykres
W regionie HTML otrzymujemy wykres AnyChart o zdefiniowanych w naszej procedurze parametrach.
Dużą zaletą tego rozwiązania jest prostota konfiguracji jego wyglądu oraz efektów, np. tooltip.
Sposób ustawiania formatu tooltip’ów:
Taki sposób tworzenia wykresów AnyChart pozwala na pełną kontrolę zawartości zawartość wykresu. Znacznie przyspiesza ponadto proces wytwarzania aplikacji. Rozwiązanie to pozwala na generację wszystkich dostępnych wykresów AnyChart, AnyGantt, AnyStock , a nie tylko tych, na które pozwala interfejs programisty. Generacja dowolnych wykresów, niezdefiniowanych w licencji Oracle APEX, wymaga zakupu dodatkowej licencji AnyChart.
Źródła
- Dokumentacja składni XML – http://www.anychart.com/products/anychart/docs/xmlReference/index.html
- JavaScript AnyChart – http://anychart.com/products/anychart/docs/users-guide/JavaScriptIntegration.html