2024年8月20日火曜日

amChartsをOracle APEXのアプリケーションに組み込む

amChartsをOracle APEXのアプリケーションに組み込んでみます。

Oracle JETやその他のチャート描画ライブラリの組み込み作業で表示したチャートと、同じチャートを表示してみます。


直接amChartsで描画



amChartsのGetting startedを参照して、作業を進めます。

ページ・プロパティJavaScriptファイルURLに以下を記述します。

https://cdn.amcharts.com/lib/5/index.js
https://cdn.amcharts.com/lib/5/xy.js
https://cdn.amcharts.com/lib/5/themes/Animated.js


静的コンテンツのリージョンの名前amChartsとし、ソースHTMLコードに以下を記述します。

<div id="myChart" class="h400"></div>


チャートに描画するデータを保持するページ・アイテムとしてP1_VALUEを作成します。タイプ非表示です。

ページ・アイテムP1_VALUE計算を作成し、ページの描画前にデータを設定します。計算タイプとしてSQL問合せ(単一の値を返す)を選択し、SQL問合せに以下を記述します。
select
    json_arrayagg(
        json_object(
            'ename' value ename,
            'sal'     value sal
        )
    order by empno asc )
from emp where deptno = 10

チャートを描画するJavaScriptのコードを、ページ・プロパティページ・ロード時に実行に記述します。

amChartsのDemosに含まれるClustered Bar Chartのコードを簡素にしています。



以上で実装は完了です。ページを実行すると以下のように表示されます。




テンプレート・コンポーネントの作成




amChartsのバー・チャートを描画するテンプレート・コンポーネントについて、設定内容を説明します。

テンプレート・コンポーネントの名前amCharts Bar Chartとしました。テンプレート部分には以下を記述しています。


カスタム属性としてCSS ClassesCategory Y, Value X, ValueColorWidthHeightを作成しています。Category YはY軸となる(Valueに含まれる)属性で、今回の実装ではenameを指定します。Value XはX軸となる値の属性で、今回の実装ではsalです。Valueタイプセッション・ステート値ColorカラーWidthHeightは両方とも整数です。


ディレクトリjsファイル名script.jsとして、カスタム要素a-amcharts-bar-chartの実装を記述します。


ロードするファイルURLJavaScriptに以下を記述します。

https://cdn.amcharts.com/lib/5/index.js
https://cdn.amcharts.com/lib/5/xy.js
https://cdn.amcharts.com/lib/5/themes/Animated.js
#PLUGIN_FILES#js/script#MIN#.js


以上でテンプレート・コンポーネントは完成です。

リージョンにamChartsのテンプレート・コンポーネントを実装します。

ページ・アイテムP2_VALUEは、最初に作成したP1_VALUEと同じ設定で作成します。

識別名前amChartsタイプamCharts Bar Chartとします。


リージョンの属性を開き、Category YとしてenameValue XとしてsalValueとしてP2_VALUEColorとして#309fdbを設定します。Height400とします。


以上で実装は完了です。ページを実行すると以下のように表示されます。




対話モード・レポートへの組み込み




対話モード・レポートソースSQL問合せとして以下を記述します。
select
    dname,
    json_arrayagg(
        json_object(
            'ename' value ename,
            'sal'     value sal
        )
    order by empno asc ) value,
    '' chart
from emp_dept_v group by dname


対話モード・レポートの列CHARTを選択し、識別タイプamCharts Bar Chartに変更します。

設定Category YenameValue XsalValueVALUEColor#309fdbを設定します。Width400Height200を設定します。


以上で実装は完了です。ページを実行すると以下のように表示されます。


今回の記事は以上になります。

作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/integrating-amcharts.zip

Oracle APEXのアプリケーション作成の参考になれば幸いです。