Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


フィルタの初期値を設定して、アプリを使いやすくする方法

(※このトピックスは、Valence開発元(米CNX社)のブログ記事を翻訳・再編集したものとなります。原文記事は、コチラとなります。)

Nitro App Builder(NAB) ベースのアプリケーションをできるだけ使いやすくするために、ユーザーが求めるデータを取得するために必要な入力作業と、クリック数を減らすことは大きな効果があります。ユーザーがグリッドのフィルターを特定の日付、現在の日付に関連する日付範囲、または勤務先に基づく特定の部署などに日常的に設定することがわかっている場合、NABではフィルター値を毎回手動で設定する手間を省く方法がいくつも用意されています。

NAB でフィルタ値を設定する仕組みには、アプリに値をハードコードする、現在の日付に相対する日付を設定する、簡単な RPG ルーチンを呼び出してユーザーの権限(役割)に基づくフィルタをプログラム的に設定する、またはNABの「アプリ変数」から値を取得する等があります。本Tipsでは、各設定方法について簡単に説明します。

初期値のハードコーディング

ユーザーフィルタの初期値を設定する簡単な方法は、フィルタの「初期値」設定に何かを指定することです。これは、NABのウィジェット編集で、左側メニューのフィルタタブに移動して、「初期値」セルをクリックすると、値を指定するためのウィンドウが表示されることによって行われます。ここで設定された値は、すべてのユーザーに対して適用されます。「自動ロードディング」を設定した、大量のデータを持つウィジェットの、パフォーマンスを向上させるという理由のため、初期表示でデータをフィルタリングする際にも時折使用されます。

Hard-coded value - Grid

日付列フィルタリングの初期値設置画面は多機能です。もちろん特定の日付を設定することもできますが、月日が経つにつれて、ハードコードされた日付(固定日)は過去になりすぎ、使いにくくなる可能性があります。他の方法として、現在の日付からの相対的な初期値を設定することもできます。たとえば、現在の日付から1カ月を引いて、その月の初日に移動し、デフォルト値が常に前月の初日となるようにする等です。

RPGプログラムを呼び出して初期値を設定する

フィルター値をデフォルトにする別のウィジェット・レベルの設定方法は、VALENCEライブラリに含まれるQRPGLESRCファイルのメンバー 「EXNABIV」をベースとするRPGプログラムを呼び出すことです。プログラムはユーザーの情報を取得し、ユーザーの場所や条件に応じた値を設定することができます。

この方法を使うには、プログラムEXNABIVのソースをコピーし、コピーしたメンバにウィジェットに適した名前を付けるだけです。そして、Processプロシージャの中に、デフォルトを設定したいフィルタ名を setValueの1番目のパラメータとして挿入し、2番目のパラメータは、フィルタに必要なデフォルト値で、タイプに関係なく文字列として指定してください。
つまり、数値の場合は「123」、日付の場合は「2022-05-23」というように、*ISO形式(YYYY-MM-DD)の日付の文字列を指定します。

EXNABIV

このプログラムをコンパイルした後、フィルタタブの右側にある設定ドロワーメニューをクリックし、初期値プログラムフィールドにプログラム名を指定して、ウィジェットにリンクさせる必要があります。

アプリ変数による初期値設定

フィルタの初期値をウィジェット・レベルではなく、アプリケーション・レベルで設定したい場合があります。例えば、他のウィジェットをクリックした後にポップアップとしてアプリ内に表示されるウィジェットがある場合、以前のフィルターアクションに基づいてポップアップウィジェットのデフォルトフィルター値を設定することがより適切である場合があります。このような場合、アプリ変数使用して、フィルタの初期値を設定することができます。

適切なアプリ変数を定義し、「動作内容」の設定で適切なアクションに設定したら、その値をウィジェットのフィルタにリンクする手順は、ウィジェットの設定を呼び出し(これも、ウィジェットではなく、アプリを編集している間)、「アプリ変数にリンク」ボタンをクリックすることです。Set Filtersセクションまでスクロールダウンし、「アプリ変数」を割り当てます。

もし、アプリが「動作内容」の起動時/閉じる ドロワーメニューで指定されたスタートアップ・プログラムが設定されている場合、「スタートアッププログラム」は、アプリ変数を通じて、同様に初期フィルター値を設定することができることに注目してください。これは、上記のウィジェットレベルのEXNABIVプログラムによる処理を、アプリレベルで実行するのと同様です。

デフォルト値に関して、最後にもう一つ追加として、ウィジェットレベルの設定ドロワーメニューにある「リセットを許可する」チェックボックスは、フィルタフィールドの横にリセットボタンを表示するかどうかを制御するものです。「リセット」ボタンをクリックすると、すべてのフィルタフィールドが、ウィジェットにハードコードされた、または初期値プログラムによって設定された初期値に戻ります。しかし、これはアプリ変数ベースのフィルター値には適用されません。アプリ変数のフィルタはアプリ変数の値がアクティブに変更された場合にのみ適用されることに注意してください。