「現在の作業者を変更」ボタンを非表示にしたい

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 日が経過したので自動的にクローズされました。新たに返信することはできません。