お世話になります。
フォームブリッジと連携したkViewerのリストビューです。
フィールドコード「submission」のチェックボックスで、「本部提出」というボタンにチェックを付けると、kViewer上で編集不可になるようjavascriptで下記のコードで行っていました。
しかし、9月のkViewerアップデートの新バージョンでは動作しなくなりました。新バージョンで動作させる方法はあるでしょうか?どうぞよろしくお願いいたします。
(function () {
‘use strict’;
kv.events.record.mounted = [function (state) {
if (state.record.submission.value == ‘本部提出’) {
document.getElementsByClassName(‘kv-fb-content’)[0].style.display = ‘none’;
}
}];
})();
____________________________
追記 chatGPT君に依頼して、一応動作するものが作れてしまったのでこちらに残しておきます。
(function () {
‘use strict’;
/**
* このスクリプトの目的:
* - 「本部提出」の値を持つレコードの場合に、特定のボタンを非表示にする。
* - 主にレコード詳細ページで動作し、MutationObserverを使用して動的なDOM変更にも対応。
*
* 依存要素:
* 1. 「本部提出」のデータを持つフィールド:
* - セレクタ: [data-field-code="submission"] .kv-detail-field-value > div
* - 値が「本部提出」の場合に非表示処理を実行。
* 2. 非表示対象のボタン:
* - セレクタ: button.border-role-action.bg-role-action
*
* 注意事項:
* - ページ構造やクラス名が変更された場合、上記セレクタを修正する必要があります。
* - MutationObserverの監視対象が広範囲なため、パフォーマンスに注意してください。
*/
const hideButtonIfSubmission = () => {
// 「本部提出」の値を取得
const submissionField = document.querySelector('[data-field-code="submission"] .kv-detail-field-value > div');
if (!submissionField) {
console.warn('Submission field not found');
return; // フィールドが見つからない場合は処理を終了
}
const submissionValue = submissionField.textContent.trim(); // 値を取得
console.log('Submission Value:', submissionValue);
// 「本部提出」の場合のみボタンを非表示
if (submissionValue === '本部提出') {
const targetButton = document.querySelector('button.border-role-action.bg-role-action'); // 対象ボタンを選択
if (targetButton) {
targetButton.style.display = 'none'; // ボタンを非表示に設定
console.log('Button hidden for 本部提出');
} else {
console.warn('Target button not found');
}
} else {
console.log('This record is not 本部提出, button will remain visible');
}
};
// 初期化時に一度実行
document.addEventListener('DOMContentLoaded', hideButtonIfSubmission);
// DOM変更を監視して再実行
const observer = new MutationObserver(() => {
hideButtonIfSubmission();
});
observer.observe(document.body, { childList: true, subtree: true });
})();