Oracle Forumsを探してみると、HTML式とCSSを使った以下の回答を見つけました。
How to Display Star rating in IR?
この回答はテンプレート・ディレクティブが導入される前の実装で、新しく導入されたテンプレート・ディレクティブを使うと、もっと簡単に実装できそうです。
サンプル・データセットのEMP/DEPTに含まれる表EMPをソースとした対話モード・レポートを使って、ジョブがCLERKの従業員の勤続年数を10年単位で星評価してみます。
以下のような表示になります。
表EMPをソースとした対話モード・レポートを含むアプリケーションが作成済みとします。
レポートのソースとなるSELECT文に、勤続年数が10年で1、20年で2、30年で3、、、となる列STARを作成します。
floor((extract(year from sysdate) - extract(year from hiredate)) / 10) star
ソースのSQL問合せは以下になります。
select EMPNO,
ENAME,
JOB,
MGR,
HIREDATE,
floor((extract(year from sysdate) - extract(year from hiredate)) / 10) star,
SAL,
COMM,
DEPTNO
from EMP
この状態でのレポートの表示は以下になります。
星評価なので、表示する星のアイコンを探します。FontAPEXのサイトにアクセスします。
starで検索して見つけた、fa-starのアイコンを使用することにします。
fa-starをクリックして開きます。
アイコンの表示色にu-hot-textを使用することにします。
<span class="fa fa-star u-hot-text" aria-hidden="true"></span>
列STARの列の書式のHTML式として、以下を記述します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{case JOB/} | |
{when CLERK/} | |
{case STAR/} | |
{when 0/} | |
10年未満 | |
{when 1/} | |
<span class="fa fa-star u-hot-text" aria-hidden="true"></span> | |
{when 2/} | |
<span class="fa fa-star u-hot-text" aria-hidden="true"></span> | |
<span class="fa fa-star u-hot-text" aria-hidden="true"></span> | |
{otherwise/} | |
<span class="fa fa-star u-hot-text" aria-hidden="true"></span> | |
<span class="fa fa-star u-hot-text" aria-hidden="true"></span> | |
<span class="fa fa-star u-hot-text" aria-hidden="true"></span> | |
{endcase/} | |
{otherwise/} | |
対象外 | |
{endcase/} |
以上で実装は完了です。アプリケーションを実行すると、本記事の先頭にある画像のように対話モード・レポートが表示されます。
今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/sample-ir-star-rating.zip
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完