担当者サブビューを構成したら、ContactName_cフィールドを含むいくつかのフィールドをサブビュー表に追加しました。 ContactName_cフィールドをハイパーリンク・フィールドにして、実行時にユーザーがそのフィールドをクリックして担当者詳細ページにナビゲートできるようにします。
サブビューでのリンク・フィールドの作成
-
「レイアウト」タブをクリックし、PaymentContactMMInter_Src_Payment_cToPaymentContactMMInter_c_Tgt > 「ルール・セット」サブタブをクリックします。
-
SubViewLayoutルール・セットをクリックします。
-
「デフォルト」レイアウトの横にある開くアイコンをクリックします。
-
ContactName_cフィールドをクリックして強調表示します。
-
フィールド・テンプレートを作成します。
-
プロパティ・ペインで、テンプレート・フィールドの横にある「作成」をクリックします。
-
「テンプレートの作成」ダイアログのラベル・フィールドに、linkTemplate
と入力します。
-
テンプレートのIDを受け入れて、「作成」をクリックします。
linkTemplateを設計できるテンプレート・サブタブにナビゲートします。
-
「コード」ボタンをクリックします。

-
linkTemplate
タグの間のデフォルトの入力テキスト・エントリの行を削除します。
<oj-input-text value="{{ $value }}" label-hint="[[ $labelHint ]]"></oj-input-text>
-
必要に応じて、テンプレート・タブでコンポーネント・パレットを展開します。
-
フィルタ・フィールドに、Hyperlink
と入力します。
-
ハイパーリンク・コンポーネントをテンプレート・エディタのlinkTemplate
テンプレート・タグの間にドラッグ・アンド・ドロップします。

-
ハイパーリンク・ノードのプロパティ・ペインのテキスト・フィールドで、式エディタ・アイコン(fx)をクリックします。

-
「式エディタ」ダイアログで、テキスト・ボックスから値を削除し、$value.ContactName_c
と入力します。
-
「保存」をクリックします。
-
ターゲット・フィールドで、「同じフレーム」を選択します。
-
データ・タブのURLフィールドに、#と入力します。
-
詳細ページに渡されるIDフィールドを使用して、次のプロパティをテンプレートに追加します:
:_primaryKeyId="[[$value.<idFieldName>()]]"
この例では、次を追加します:
:_primaryKeyId="[[$value.Person_Id_Tgt_PersonToPaymentContactMMInter_c()]]"
結果のコードは次のようになります:
<template id="linkTemplate">
<a target="_self" class="oj-link" href="#" :_primaryKeyId="[[$value.Person_Id_Tgt_PersonToPaymentContactMMInter_c()]]"><oj-bind-text value="[[ $value.ContactName_c ]]"></oj-bind-text></a>
</template>
-
次に、仮想フィールドを作成します。
-
PaymentContactMMInter_Src_Payment_cToPaymentContactMMInter_c_Tgtタブで、フィールド・サブタブをクリックします。
-
「+カスタム・フィールド」をクリックします。
-
「フィールドの作成」ダイアログのラベル・フィールドに、linkField
と入力します。
-
タイプ・フィールドで、「オブジェクト(仮想フィールド)」を選択します。
-
「作成」をクリックします。
-
新しい仮想フィールドのプロパティ・ペインで、フィールド・セクションの横にある「追加」をクリックし、次の2つのフィールドを追加します:
第1フィールドは詳細ページに渡されるIDフィールドで、第2フィールドはハイパーリンク・コンポーネントで表示する必要がある名前フィールドです。
-
列ラベルが実行時に表示されるように、labelHintプロパティを設定します。
-
プロパティ・ペインで、JSONボタンをクリックします。

-
linkFieldフィールドのJSONに次を追加します:
"labelHint": "[[$translations.CustomBundle.ContactName()]]",

-
同じJSONで、次の"imports"セクションを"addField"のピアとして追加します:
,
"imports": {
"translations": {
"self": [
"CustomBundle"
]
}
-
次に、リンク・フィールドを担当者サブビューのレイアウトに追加します:
-
ルール・セット・サブタブをクリックし、SubViewLayoutをクリックしてサブビュー・ルール・セットに戻ります。
-
「デフォルト」レイアウトの横にある開くアイコンをクリックします。
-
表示するフィールドのリストからContactName_cフィールドを削除します。
-
linkFieldフィールドをクリックして、サブビュー・レイアウトに追加します。
-
「表示するフィールドの選択」で、linkFieldフィールドを最初の位置にドラッグします。

-
プロパティ・ペインのテンプレート・フィールドで、linkTemplateを選択します。
-
次に、イベント・リスナーおよびアクション・チェーンを作成します。
-
PaymentContactMMInter_Src_Payment_cToPaymentContactMMInter_c_Tgtタブで、テンプレート・サブタブをクリックします。
-
linkTemplateをクリックします。
-
構造ビューで、ハイパーリンク・ノードをクリックします。

-
プロパティ・ペインで、イベント・サブタブをクリックします。
-
「+新規イベント」 > 「クリックで」をクリックします。
アクション・サブタブのプロパティ・ペインの上にあるコード・ボタンをクリックします。

-
コードで、HyperlinkClickChainセクションを次のように更新します(Contactオブジェクトを使用していない場合は、独自のユースケースで必要に応じて更新します):
class HyperlinkClickChain extends ActionChain {
/**
* @param {Object} context
*/
async run(context, {event}) {
const { $layout, $extension, $responsive, $user } = context;
const navigateToApplicationCxSalesResult = await Actions.navigateToApplication(context, {
application: 'cx-sales',
flow: 'application',
page: 'container/contacts/contacts-detail',
params: {
id: event.target.getAttribute('_primarykeyid'),
view: 'foldout',
},
});
}
}

-
「イベント」変数を「イベント」パラメータにマップします:
-
PaymentContactMMInter_Src_Payment_cToPaymentContactMMInter_c_Tgtタブで、イベント・リスナー・サブタブをクリックします。
-
「コンポーネント・イベント・リスナー」セクションで、HyperlinkClickChain行を強調表示します。
-
プロパティ・ペインの「入力パラメータ」セクションで、「イベント」をクリックします。
-
「変数をパラメータにマップ」ダイアログで、「ソース」側の「イベント」→「イベント」変数を「ターゲット」側のイベント・パラメータにマップします。

-
式オプションをクリックします。
-
「保存」をクリックします。
パネルでのリンク・フィールドの作成
フィールド・テンプレートと仮想フィールドはすでに作成されているため、リンク・フィールドを使用してパネルを更新することもできます。
-
「レイアウト」タブをクリックし、PaymentContactMMInter_Src_Payment_cToPaymentContactMMInter_c_Tgt > 「ルール・セット」サブタブをクリックします。
-
PanelCardLayoutルール・セットをクリックします。
-
「デフォルト」レイアウトの横にある開くアイコンをクリックします。
-
item1スロットで、ContactName_cフィールドを削除し、かわりにlinkFieldフィールドを追加します。

-
linkFieldフィールドをlinkTemplateテンプレートに関連付けるには:
-
PaymentContactMMInter_Src_Payment_cToPaymentContactMMInter_c_Tgtタブ→「JSON」サブタブをクリックします。
-
PanelCardLayoutレイアウト・セクションで、linkFieldフィールドをdisplayPropertiesセクションに追加します。
次のようにlinkTemplateテンプレートを追加します:
,
"fieldTemplateMap": {
"linkField":"linkTemplate"
}
更新されたJSONは次のようになります:

パネルとサブビューでリンク・フィールドをテスト
payment_cリスト・ページからアプリケーション拡張をプレビューして、リンク・フィールドをテストします。
payment_c-listページで、プレビュー・ボタンをクリックして、ランタイム・テスト環境の変更を表示します。
-
結果のプレビュー・リンクは次のようになります:
https://<servername>/fscmUI/redwood/cx-custom/payment_c/payment_c-list
-
プレビュー・リンクを次のように変更します:
https://<servername>/fscmUI/redwood/cx-custom/application/container/payment_c/payment_c-list
ノート: プレビュー・リンクに/application/container
を追加する必要があります。
次のスクリーンショットは、データを使用したリスト・ページの外観を示しています。

-
データが存在する場合は、リスト・ページの任意のレコードをクリックして詳細ページにドリルダウンできます。 ヘッダー・リージョンおよびパネルを含む詳細ページが表示されます。
担当者パネルが表示されます。

-
担当者パネルで担当者名をクリックして、担当者詳細ページにドリルダウンします。
-
ブラウザの戻るボタンをクリックします。
-
担当者パネルの下部にあるすべての担当者を表示リンクをクリックして、サブビューにドリルダウンします。

-
サブビューで担当者名をクリックして、担当者詳細ページにドリルダウンします。
Push Gitコマンドを使用して作業内容を保存します。
Gitタブに移動し、変更内容を確認し、Gitプッシュを実行します(これはコミットとGitリポジトリへのプッシュの両方を行います)。
