4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

Oracle APEXでハイライト表示をする方法は沢山あります。
対話モード・レポートのハイライト機能を使えば、直ぐにレポート内の任意の行をハイライト表示することが出来ます。

ただ、行すべてをハイライトするのではなく、任意の列のみハイライトするにはどうすれば良いでしょうか。本記事ではCSSを記述し、以下の様にハイライトを実装してみます。
スクリーンショット 2024-06-18 092410.png

【前提条件】

  • Oracle APEXのワークスペースを作成済みであること

1. APEX環境の準備

Oracle APEXのワークスペース上で、新しいアプリケーションを作成します。(ハイライト実装を試すことの出来るデータと、対話モード・レポートが既に作成済みであれば、2. ハイライトの実装へスキップします)

  1. Oracle APEXのワークスペースへログインし、アプリケーション・ビルダーをクリックします。
    1.png

  2. 新たなアプリケーションを作成するので、作成をクリックします。
    2.png

  3. サンプルデータセットとして、student.xlsxというExcelファイルのデータを使用します。ファイルからアプリケーションの作成をクリックし、アプリケーションを作成します。
    3.png

  4. こちらからstudent.xlsxというExcelファイルをダウンロードし、APEXの画面にドラッグアンドドロップします。
    4.png

  5. 表名をSTUDENTとし、インポートしたstudent.xlsx内のデータを、STUDENTという新規表へロードします。

    インポートしたExcelファイルのデータは、画面下部のプレビューから見ることが出来ます。Excelファイルには、生徒の氏名、生年月日、都道府県、メールアドレスなどのデータが格納されています。
    5.png

  6. データのロードが終了し、STUDENT表が新規に作成されました。作成された表を基に、アプリケーションを作成します。アプリケーションの作成をクリックします。
    6.png

  7. アプリケーションの作成ページが表示されたら、何も変更せず、アプリケーションの作成をクリックします。
    7.png

  8. アプリケーションが作成されました。
    image.png
    画面上部のSQLワークショップから、作成されたSTUDENT表を確認する事が出来ます。
    image.png

2. ハイライトの実装

  1. 対話モードレポートのあるページのページ・デザイナを開きます。(4 - Studentレポートに対話モードレポートが作成されているので、4 - Studentレポートをクリックします。)
    8.png

  2. ページのCSS>インラインをクリックし、コードエディタを開きます。
    11.png

  3. コードエディタに以下のCSSを記述します。

    .chip {
    padding: 4px 10px;
    border-radius: 20px;
    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .1);
    }
    
    .chip-success {
    background: #cdffe0;
    color: #00592e;
    }
    
    .chip-warning {
    background: #faf334;
    color: #cf630b;
    }
    
    .chip-danger {
    background: #f3cee5;
    color: #990067;
    }
    

    chipを定義、背景色や文字色を変更したchip-success、chip-warning、chip-dangerも定義します。それぞれのchipの背景色(background)と文字色(color)等は自由に変更可能です。
    image.png

  4. Studentリージョンをクリックし、ソース>タイプ>SQL問合せと変更します。
    12.png

  5. SQL問合せをクリックし、編集します。
    本記事では、生徒の年齢が18歳未満の場合はピンク色でハイライト、生徒の年齢が55歳以上の場合は黄色でハイライトをしたいと思います。
    image.png
    SQL問合せのコードエディタで、以下の様に記述します。
    CASE式を使用して、年齢が18歳未満だった場合はchip-danger内に年齢を表示、年齢が55歳以上だった場合はchip-warning内に年齢を表示するように記述しました。

    select ID,
           "氏名",
           "フリガナ",
           "性別",
           "生年月日",
           (CASE
                WHEN "年齢" < 18
                    THEN '<span class="chip chip-danger">'||to_char("年齢")||'</span>'
                WHEN "年齢" >= 55
                    THEN '<span class="chip chip-warning">'||to_char("年齢")||'</span>'
                ELSE to_char("年齢")
           END) "年齢",
           "郵便番号",
           "都道府県",
           "メールアドレス"
      from STUDENT
    
  6. 本記事では、STUDENT表の中の年齢列にハイライトを表示させたいので、Student>年齢>セキュリティ>特殊文字をエスケープトグルをオフにします。(他の列にもハイライトを表示させる場合は、同様にトグルをオフにします。)
    13.png

  7. これでハイライトの実装が終わりました。画面上部の緑色の保存と実行ボタンをクリックし、確認してみます。
    14.png

  8. デフォルトで作成されるログイン画面が表示されます。APEXのユーザー名とパスワードを入力し、ログインします。
    スクリーンショット 2024-06-18 091900.png

  9. 対話モード・レポートが作成されたページをクリックします。(Studentレポートページに対話モードレポートが作成されているので、Studentレポートページをクリックします。)
    スクリーンショット 2024-06-18 091946.png

  10. 変更を加えた年齢列は非表示になっているので、列を追加し、表示させます。アクションをクリックし、をクリックします。
    スクリーンショット 2024-06-18 092035.png

  11. をクリックすると、列の選択という画面が表示されます。年齢をクリック、の記号をクリックし、年齢をレポートに表示に移動します。
    スクリーンショット 2024-06-18 092106.png

  12. レポートに表示の右隣りにある記号をクリックし、年齢を生年月日の隣に表示させます。
    スクリーンショット 2024-06-18 092124.png

  13. 設定した通り、年齢が18歳未満の場合は年齢がピンクでハイライト、年齢が55歳以上の場合は年齢が黄色でハイライトされるようになりました。
    image.png

本記事は以上となります。是非、様々な条件でハイライトを実装してみて下さい。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?