確認に使用しているチャート・リージョンのソースのSQL問合せとして、以下を設定しています。
SELECT 1000 + (LEVEL - 1) * 80000 AS val, level l
FROM dual
CONNECT BY 1000 + (LEVEL - 1) * 80000 <= 2000000;
チャートのシリーズの列のマッピングとして、ラベルにL、値にVALを割り当てています。
Y軸のラベルのフォーマットですが、主に値の書式および書式スケールで決定されます。
チャートの初期化JavaScriptファンクションで設定できるのは、基本的にConverterOptionsなので、Converterインターフェースを実装したクラスが持つformatファンクションは定義できません。そのため、数値ラベルを変換するIntlNumberConverterのインスタンスを生成し、formatファンクションを置き換えた上で、チャートのY軸ラベルのConverterとして使用します。
Converterの置き換えはチャートのリフレッシュ後に実施します。
Y軸ラベルを置き換えるチャートに動的アクションを作成します。タイミングのイベントはリフレッシュ後です。
TRUEアクションとしてJavaScriptコードの実行を選択し、設定のコードに以下を記述します。
IntlNumberConverterのインスタンスを生成しformatファンクションを置き換えた後、チャートのyAxis.tickLabel.converterに設定しています。
JavaScriptからチャートを参照するために、詳細の静的IDとしてtestを設定しています。
また、チャートのY軸の値の書式に少数を選択します。yAxis.tickLabel.converterに設定したIntlNumberConverterのインスタンスは、書式が少数のときに限り有効になるようです。
以上の設定で、アプリケーションが日本語でもY軸のラベルにK、Mといった略記が表示されます。
今回の記事は以上になります。
作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/sample-y-axis-ticklabel-format.zip
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完