Anchor | ||||
---|---|---|---|---|
|
...
GeneralPanelOptions classは、パラメーターパネルとセクションレベルで、一般的なユーザーインターフェイスの表示オプション定義するために使用します。重要なメソッドを以下に示します。
メソッド | 説明 |
public void setSaveButton(boolean saveButton) public void setSaveButtonOptions(Map<String, Object> opts) public void setSaveText(String saveText) | setSaveButtonオプションをtrueに設定することで、パネルやセクションに保存ボタンを表示します。表示オプションは、setSaveButtonOptionsを使用して設定することもできます。利用可能なオプションの一覧は、インプットタイプ項目のtype BUTTON配下に示されています。ボタン上のテキストは、setSaveTextを使用してカスタマイズすることができます。 |
public void setExpandable(boolean expandable) public void setExpanded(boolean expandable) | これらは、セクションを展開可能にし、展開表示をするために使用します。 |
public void setShowName(boolean showTitle) | こちらをtrueに設定した場合、パネルやセクションの名前は、コンテナのトップに表示されます。 |
public void setCssRules(Set<CssRule> cssRules) | こちらのメソッドは、セクションやパネル、そのhtmlコンテナ内のすべてをスタイリングするカスタムCSSルールを設定するために使用します。 |
CSSRule
こちらのインターフェイスは、PanelCollection APIの様々なレベルのスタイリングルールを定義するために使用します。これをサポートするレベルは、CssRuleオブジェクトのセットを受け付けます。Yellowfinには、CssRulelmplという実装があり、以下のような単一のCSSルールを定義します。
...
このclassは、便宜のためにオーバーロードされたコンストラクターを、各プロパティにセッターを提供します。最も記述的なコンスタクラーは、以下の通りです。
public ParameterDisplayRule(String logic, String property, Object[] vals, boolean negative, PropertyLocation location)
...
- logicは、このインスタンスのParameterDisplayRule内に複数の「子」表示ルールがある場合に、演算子を指定するために使用します。LogicはAND、またはORになります。3つの子ルールがあり、logicがANDの場合、各ルールは個別に検証され、結果は以下のように結合されます。
Rule1Result && Rule2Result && Rule3Result
「子」表示ルールが無い場合、Logicは無視されます。子ルールがある場合、「親」ルールは検証されません。これは、子ルールのコンテナとしてのみ使用されます。 - propertyは、この表示ルールに検証される「その他」のパラメーターを指定します。各パラメーターインスタンスは、その値の識別子を持ちます。例えば、ユーザーがテキストインプットパラメーターに入力したすべては、それがプロパティとして指定されている場合、識別子「SOURCE」を使用して参照されます。
- valsは、比較の値の配列です。配列内の各値は、対等性のために「その他」のパラメーターとf比較されます。これらはその後、演算子ORを使用して結合されます。
negativeは、valsを「その他」のパラメーターと比較した後に得られる結果を反転します。
If vals = {null, 0}negative 結果 true - trueの結果:property != null && property != 0
false - falseの結果:property == null || property == 0
- locationは、PropertyLocationのインスタンスであり、「その他」のパラメーターの配置場所を判断するために使用します。これは、複数のセクション/パネル内に同一のプロパティとともにパラメーターが存在する場合に有効です。これがnullの場合、プロパティは、このParamterDIsplayRuleの親と同一の場所に配置されていると判断されます。
...
- パラメーターの「プロパティ」は、変更された値とイベントデータを参照するために使用するため重要です。例:
p.setProperty("view");
- パラメーター変更時には、イベント名を指定しなくてはいけません。値ローダーは、これを元に何をするかを決定することができます。例:
p.setEvent("viewChanged");
- イベントデータは、パラメーターに接続されることもあります。これは、利用可能なすべてのフィールドや、他のステップオプションの値など、ステップに関する任意の情報になります。
p.addEventData("fieldsMap", allFieldsMap);
p.addEventData("sourceId", getStepOption("SOURCE_ID"));
値ローダーのイベントへの応答はgetUpdatedPossibleValues()、またはgenerateDynamicParameterメソッドを使用して返すことができます。これらは、以下に示すメンバー変数を使用して、イベントへの応答方法を決定することができます。Yellowfinはこれらのメソッドを、以下の手順で実行します。
pvl.getDynamicParameterOptions.setValues(pvl.getUpdatedPossibleValues());
pvl.generateDynamicParameters();Note 注意:このgenerateDynamicParameters()は何も返しません。メソッドの実装は、「応答」メンバーの設定を想定しています。
依存関係は、値依存、またはイベントを使用して設定することができます。これら両方のオプションの詳細は、以下で紹介します。
ValueDependencies
パラメーター作成時に、パラメーターが依存する「ValueDependencies」の一覧を作成することができます。これらは、パネルコレクション内の他の場所に存在するパラメーターを指している必要があります。こちらを設定すると、値の依存関係で参照されるパラメーターのひとつが変更されると、必要なすべての情報を含むリクエストがサーバへ送信されることになります。
...
値ローダーclassは、イベントに関する情報を保持する数多くの重要メンバー変数を持ちます。
メンバー変数 | 説明 | ||||||||||||||
protected Map<String, Object> changedValues | メンバーchangedValuesは、パラメーターと変更された値を持ちます。マップ内のキーは、トリガーされた変更イベントであるパラメーターの「プロパティ」属性である必要があります。 | ||||||||||||||
protected Map<String, Object> eventData | こちらのメンバーは、他のパラメーターの変更イベントをリッスンするパラメーターの「プロパティ」属性によりキーに設定されます。値は、開発者が変更イベントを受け取ったときに返信する必要があるデータです。 ビューがデータソースに依存する、データソースとビューのパラメーターを作成したとしましょう。データソースの値を1に変更した場合、changedValuesは以下のようになります。
そして、今回の例に基づき、eventDataは以下のようになります。
| ||||||||||||||
protected List<String> events | これは、値ローダーから受け取られたすべてのイベントを保持します。
| ||||||||||||||
protected DynamicParameterOptions response | 動的パラメーターオプションは、ParameterValueLoaderの応答オブジェクトです。これは、開発者がフロントエンドに表示したいすべてが含まれていなくてはいけません。DynamicParameterOptionsの詳細は、以下で紹介します。 |
メソッド
実装可能なメソッドは、以下の2つです。しかし、開発者の要望に応じて、実装に必要になるのは、以下のいずれか一方のみです。両者は、ほぼ同様の目的を果たします。
メソッド | 説明 |
public void generateDynamicParameters() | こちらのメソッドは、応答メンバー変数に値を設定します。より詳細な情報は、DynamicParameterOptionsの項目を参照してください。 こちらが推奨されるメソッドであり、より柔軟性があります。 |
public Map<String, List<CustomValue<?>>> getUpdatedPossibleValues() | 影響するすべてのパラメーターの「可能な値」のマップを返すメソッドです。マップ内の各入力では、キーはパラメーターの「プロパティ」属性である必要があります。値は、「可能な」値を含む、CustomValueオブジェクトの一覧でなくてはいけません。 こちらのメソッドは、将来的に廃止される可能性があります。 |
ファイルや大きなテキストを読み取るための、その他のヘルパーメソッドを以下に示します。
ヘルパーメソッド | 説明 |
public final byte[] getFile(Integer fileId) | こちらのメソッドは、FileUploadParameterにより記述されたファイルの読み取りに使用することができます。イベントは、パラメーター内に設定する必要があります。FileUploaderParameterのコンストラクターを使用して設定することも可能です。ファイルがアップロードされ、Yellowfinのリポジトリデータベースに保存された後、このイベントで値ローダーがトリガーされます。これは、ファイル内のデータに基づくパラメーターを読み込み/削除をするために使用することができます。 |
public final String getText(Integer textId) | これは、Yellowfinリポジトリデータベースに保存されているCLOBsを読み取る以外、getFileと類似しています。 |
DynamicParameterOptions
動的パラメーターオプションは、ParameterValueLoaderの応答オブジェクトです。これは、開発者がフロントエンドに表示したいすべてが含まれていなくてはいけません。これには、6つの項目を追加することができます。
動的パラメーターオプション | 説明 |
public void addPanel(String dynamicKey, ParameterPanel panelObject) | トリガーされたイベントのひとつが、メニューに新しいパネルの追加を要求する場合は、こちらに追加することができます。フロントエンドは、パネル定義をユーザーインターフェイスに変換します。 dynamickeyは、現在そのキーを使用している任意のオブジェクトを削除するために使用されるとともに、このパネルをキーとタグ付けすることで、将来的に削除することができます。 |
public void addSection(String dKey, String panelKey, ParameterSection sec) | クライアントサイドパネルコレクションの一部として既に存在するパネルにセクションを追加することができます。dKeyは動的キーであり、現在そのキーを使用している任意のオブジェクトを削除するために使用されるとともに、このセクションをキーとタグ付けすることで、将来的に削除することができます。panelKeyは、こちらのセクションに追加されるキーでなくてはいけません。 |
public void addParameter(String dKey, String panelKey, String secKey, Parameter parameter) | 既存のセクション/パネルの組み合わせにパラメーターを追加することができます。dKeyは動的キーであり、現在そのキーを使用している任意のオブジェクトを削除するために使用されるとともに、このパラメーターをキーとタグ付けすることで、将来的に削除することができます。panelKeyとsecKeyは、こちらのパラメーターに追加するパネルとセクションのキーでなくてはいけません。 |
public void addValue(String property, CustomValue<?> value) | ユーザーが選択することのできる単一のオプションを、DynamicParameterOptionsに追加します。プロパティは、値を表示するパラメーターに対応します。 |
public void setValues(Map<String, List<CustomValue<?>>) | DynamicParameterOptionsに現在設定されている値を上書きます。 |
public void addKeyToRemove(String key) | クライアントサイドパネルコレクションから削除するために、パラメーター/セクション/パネルのキーを追加します。対応するメソッドを使用して追加された任意のパラメーター、セクション、パネルは、削除されるキーも追加します。 |
FiledObject
フィールドを表すclassです。このclassのインスタンスは、フィールドのマッチングのために、ユーザーインターフェイスウィジェットで使用されます。
...