app.record.detail.showイベントを使用して以下の様なカスタマイズを考えています。
- レコードの条件によって「現在の作業者を変更」ボタンを非表示にしたい
それで、一応は実装したのですが以下の様な問題に遭遇し、ボタンの非表示を完全には実装できていません。
- レコードのステータスの変更後にボタンが表示されてしまう
- 通知からレコードの詳細を表示した時にボタンが表示されてしまう
上記の問題を解決して、「現在の作業者を変更」ボタンを非表示にすることは可能でしょうか?
app.record.detail.showイベントを使用して以下の様なカスタマイズを考えています。
それで、一応は実装したのですが以下の様な問題に遭遇し、ボタンの非表示を完全には実装できていません。
上記の問題を解決して、「現在の作業者を変更」ボタンを非表示にすることは可能でしょうか?
佐藤さん、こんにちは。
ワークフローのステータスが変更された時にもイベントが走れば・・・ということでしょうか。
ベタですが、ちょっと力技に任せればJavaScriptで次のような感じで出来ると思います。なお、DOMを直接触っていますので、kintoneのアップデート時には注意が必要です( https://developers.cybozu.com/ja/introduction/js-coding-guidelines.html )。
(function () {
"use strict";
// 「現在の作業者を変更」のボタンを非表示にする関数
function hideStatusReassign() {
// 「現在の作業者を変更」のボタンに対応するクラスを取得し、非表示にする
var elStatusReassign = document.getElementsByClassName('gaia-app-status-reassign')[0];
if(elStatusReassign){
elStatusReassign.style.display="none";
}
// 1000ミリ秒間隔で繰り返す
setTimeout(hideStatusReassign, 1000);
}
kintone.events.on('app.record.detail.show', function(event){
if( true /* 適用条件に変更 */){
hideStatusReassign();
}
}); // kintone.events
})();
自分が指定したタスクがずっと走り続けるので、あまり気分はよくありませんね。
回答ありがとうございます。
レコードのステータスの変更後については、setTimeoutでの監視を試してみます。
ちなみに、通知領域からレコードの詳細を表示した場合の対策は難しいでしょうか?
よろしくお願いします。
すみません、ちょっと勘違いしていました。
通知からの場合にはアプリ単位のJavaScriptを読み込んでいないようですので、「kintoneシステム管理(右上管理者歯車)」ー「カスタマイズ」ー「JavaScriptによるカスタマイズ」に入れてあげる方法があります。なお、全てのアプリに波及しますので、注意が必要です。
通知からの場合を含めて制御しようとすると、「kintone.events.on」にはかからなかったので、これを外してif文での制御することになりそうです。アドレスを見てアプリを絞るとかですね。
回答ありがとうございます。
kintone全体のカスタマイズは知らなかったので試してみます。
佐藤さん
既にチェック頂いているかもしれませんが、次の6/8の定期メンテナンスで、
・ステータスの変更
・通知を開いて表示されるレコード詳細画面
について、JSの読み込み、イベントの対応等が機能追加されるようです。
https://cybozudev.zendesk.com/hc/ja/articles/201861360
https://cybozudev.zendesk.com/hc/ja/articles/202225360
ボタンの要素取得にDOM操作が必要な点は引き続きご注意頂ければと思いますが、実装がスッキリすると予想されます。是非お試し頂ければと思います。
大変有用な情報をありがとうございます。
6/8日のアップデート後に早速試したいと思います。
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。