新規投稿
フォローする

編集画面で、サブテーブルの背景色を変更したい

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

多数決にて決議をとるようなアプリを作成しています。1つの議題に対し、複数名で、可決否決・コメントを入れていくのですが、他人の意見に左右されることがないように、他の人の解答欄は、見えないようにしたいと考えております。

過去の投稿を参考にして、詳細表示のときは、サブテーブルの背景色を変更し、他人の判定結果を塗りつぶすことはできたのですが、(ドラッグして選択すると表示されてしまうのは割り切りました)編集画面にうつったときは、背景色を変更することができません。

編集画面に移ったときも他人の回答欄を見えなくさせる方法についてアドバイスいただけると幸いです。

 

  function changeColor(arg) {
    var tr = $(kintone.app.record.getFieldElement('審議一覧')).find('tr');
    var target = arg[0];
    for (var i = 0; target.length > i; i++) {
      var row = target[i]; // 色を変える行数を取得
      $(tr[row]).children().eq(1).css('background-color', '#303030');;
      $(tr[row]).children().eq(3).css('background-color', '#303030');;
    }
  }
  kintone.events.on(['app.record.detail.show','app.record.edit.show'], function(event) {
var user = kintone.getLoginUser();
var authorizer = user['name'];
var targetRow = []; // 色変え対象の行番号
    var tableRecords = event.record['審議一覧'].value;
    for (var j = 0; j < tableRecords.length; j++) {
      var secondItemName = tableRecords[j].value['氏名'].value;
      if (secondItemName !== authorizer) {
        targetRow.push(j+1);
      }
    }
    // サブテーブルのhtmlが表示されるまで0.5秒待つ
    setTimeout(changeColor, 500, [targetRow]);
    return event;
  });

詳細画面では、判定と、コメントは塗りつぶしてます。

編集画面に入ると、塗りつぶしがきかず、他の入力者の内容が見えてします。

どうぞよろしくお願いします。

0

3件のコメント

Avatar
tsujimotot

kintone.app.record.getFieldElementは編集画面での実行に対応していませんので、

恐らく関数changeColor内の変数trの値がundefinedになっているのではないでしょうか。

あまりおすすめできませんが、devtoolで該当テーブルのclass名を調べて直接指定したり、

テーブル名(ラベル)をキーにしてDOMを特定するなどの方法が必要になるかと思います。

 

カスタマイズではありませんが、サブテーブルではなく関連レコードを使う方法はどうでしょうか。

・アクションで別アプリ(コメント用アプリとします)にコメントを登録(レコード番号をコピーし紐づけておく)

・コメント用アプリで自分のレコードのみ表示するアクセス権設定(参考:https://www.joyzo.co.jp/blog/389)

・メインアプリで関連レコード一覧で表示(自分のレコードのみが表示される)

テーブルの値を計算で使っていたりすると、ちょっとまた別のカスタマイズが必要になってしまいますが。。

ご参考まで。

0
Avatar
tsujimotot

追記です。

編集画面でのサブテーブルDOM操作について、こちらが参考になるかと思います。

https://developer.cybozu.io/hc/ja/community/posts/115010418386

0
Avatar
依田美代子

つじもとさん
アドバイスありがとうございました。試行錯誤してみます。

今後ともよろしくお願いします。

 

0
サインインしてコメントを残してください。