2023年8月18日金曜日

リージョンのカスタマイズ可能の設定について

 リージョンの属性にカスタマイズ可能というものがあります。エンドユーザーではカスタマイズ不可デフォルトでカスタマイズ可能および表示デフォルトでカスタマイズ可能および非表示のどれかを選ぶことができます。

以下のように、チャートのリージョンが2つあるページがあります。


ページ・デザイナを開き、リージョンJobSalを選択します。カスタマイズカスタマイズ可能デフォルトでカスタマイズ可能および表示を選択します。


変更を保存し、ページを実行するとフッターにカスタマイズというリンクが表示されます。

カスタマイズ可能デフォルトでカスタマイズ可能および非表示を選んだ場合は、リージョンは初期状態で非表示になります。


カスタマイズをクリックすると、リージョン表示のカスタマイズを行うダイアログが表示されます。現在表示されているリージョン、SalJobはハイライト表示されています。


JobSalをクリックします(ハイライトされなくなります)。表示の対象外にして、変更の適用をクリックします。


プリファレンスがユーザー〇〇用に変更されました。と表示され、リージョンが非表示になりました。サーバーでの処理なので、HTML自体が生成されていません。


ユーザーによってリージョンの表示(リージョンの生成)をカスタマイズできるようになりました。

リージョンの表示/非表示を行う条件は、ユーザーのプリファレンスとして保存されています。プリファレンスの確認は、管理サービスの管理から行います。


画面右のメタデータの管理より、セッション・ステートを開きます。


プリファレンスの管理ユーザー別のプリファレンスを開きます。


特定のユーザーに限定するようフィルタを設定します。次にDISPLAY_CUSTOMIZED_REGION名前に含むプリファレンスを選択します。


以下の形式の名前で、リージョンの表示/非表示を決めるプリファレンスが作られていることが確認できます。

DISPLAY_CUSTOMIZED_REGION_F<APP_ID>_P<PAGE_ID>_<REGION_ID>

プリファレンスは、タイプユーザー・プリファレンスのプロセスによって設定することができます。設定タイプSet to Item ValueまたはSet to Item Value If Not Nullです。


プリファレンスの削除には、設定タイプとしてReset Preferences (remove all preferences for current user)を選ぶことができます。


プリファレンスを参照するには、ページ・アイテムのソースタイプとしてプリファレンスを選択し、プリファレンスプリファレンス名を設定します。


プリファレンスは、APEX_UTIL.GET_PREFERENCEAPEX_UTIL.SET_PREFERENCEAPEX_UTIL.REMOVE_PREFERENCEなどのAPIより操作することもできます。

例えば以下のようにSET_PREFERENCEを呼び出すことにより、ユーザーがAPEXDEV、アプリケーションIDが250、ページIDが2のページにあるリージョンIDが65898576107487319のリージョンを非表示に変えることができます。
begin
    apex_util.set_preference(
        p_preference => 'DISPLAY_CUSTOMIZED_REGION_F250_P2_65898576107487319'
        ,p_value => 'N'
        ,p_user => 'APEXDEV'
    );
end;
APEXビューから参照する場合は、APEX_WORKSPACE_PREFERENCESを検索します。
select preference_name, preference_value from apex_workspace_preferences
where user_name = 'APEXDEV' and preference_name like 'DISPLAY_CUSTOMIZED_REGION%'

リージョンの表示/非表示を制御するプリファレンスが作成済みの場合、カスタマイズ可能デフォルトでカスタマイズ可能および表示デフォルトでカスタマイズ可能および非表示に変更しても、リージョンの表示/非表示に影響を与えません。すでに保存されているプリファレンスの値が参照されるためです。

リージョンのカスタマイズ可能についての紹介は以上になります。

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