【フォームブリッジ】kViewerルックアップの選択肢を必要なものだけに制限する方法

お世話になっております。

フォームブリッジに関する質問です。

簡易認証とMyページなどを使っています。

kViewerルックアップの選択肢をログインしたユーザーの関連するレコードだけに制限する方法を教えていただけますでしょうか。

以上、よろしくお願いします。

nishiさん

 

簡易認証したユーザーの名前とユーザー名はGlobal変数のformUserに格納されています。

また、kViewerルックアップの選択肢は該当フィールドのkviewerRecordsに配列で格納されています。

フィールドは、state.fieldsにあるので、欲しいフィールドを指定してください。

サンプルとしては以下のようにすると選択肢を制限することができます。

 

 

(function () {
'use strict'

fb.events.form.created = [function (state) {
state.fields[0].kviewerRecords = state.fields[0].kviewerRecords.filter(function (r) {
switch (formUser.username) {
case 'ochiai':
return r.username.value === 'aaa'
}
})
return state
}]
})()

 

以上、参考になりますでしょうか?

 

落合さん

ご返答ありがとうございます。

>簡易認証したユーザーの名前とユーザー名はGlobal変数のformUserに格納されています。

ありがとうございます。確認できました。

>また、kViewerルックアップの選択肢は該当フィールドのkviewerRecordsに配列で格納されています。

ありがとうございます。確認できました。

 

実行するとフィルタが素通りされてしましました。指定する内容が違うのでしょうか。

ご指導いただければ幸いです。

state.fields→[12]に指定したい名前が入っているフィールド 表示したい名前:西

formUser.username→"nishi"

↓実行したスクリプトです。コンソールにSTRATは表示されていますが、switchは表示されていません。

(function () {
‘use strict’

fb.events.form.created = [function (state) {

console.log(formUser);
console.log(state.fields);
console.log(“STRAT”);

state.fields[12].kviewerRecords = state.fields[12].kviewerRecords.filter(function (r) {

console.log(“switch”);
switch (formUser.username) {
case ‘nishi’:
return r.username.value === ‘西’
}
})
return state;
}];
})();

以上です。お手数ですがよろしくお願い致します。

nishiさん

 

 

おそらく、kviewerRecordsが空の配列ではないでしょうか?

console.log(state.fields[12].kviewerRecords);

を試してみると良いかと思います。

 

以上、参考になりますでしょうか?

落合さん

 

ありがとうございます。対応できました。

情報の持ち方を勘違いしておりました。

state.fields[1].kviewerRecordsにkViewerルックアップのデータがいましたので

フィルターに指定することができました。

ありがとうございます。大変助かりました。

大変お世話になっております。

前回の回答で稼働していたJSがエラーになりました。

【エラー内容】

state.fields[0].kviewerRecordsが「undefined」になり

state.fields[0].kviewerRecords.filterを使用するとエラーになります。

 

 

今回のバージョンアップで大きく仕様が変更されていますが、同じコードで対応可能でしょうか

変更が必要であれば教えてください

 

仕様変更により下記を行っています

・Viewerは「外部公開API」へ変更

・KVIEWER_LOOKUPも「選択肢となるレコードのAPIビュー」を指定して作成。

kViewerルックアップに以下の設定を行ってください。

  • フィールドコードを __authenticationUsername__ にする

  • 検索対象となるフィールドにユーザー名が対応するフィールドを選択

  • 「完全に一致したレコードのみを検索する」を有効にする

 

これにより、kViewerルックアップのデフォルト値が簡易認証でログインしたユーザー名になります。

ただこの設定だと、検索ワードを変更できてしまうので、編集不可のJSカスタマイズを行う必要があります。

 

fields[12].editable = false

 

という感じですね。

以上、参考になりますでしょうか?

落合さん

 

ありがとうございます。対応できました。

 

大変助かりました。今後ともよろしくお願いいたします。