サブテーブルを降順にしたい

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

JavaScriptでカスタマイズをしていてわからないところが出たので質問させていただきます。

+ボタンを押すと今までのテーブルの上に積み重なっていくサブテーブルを作成したいです。

ボタンを押したりプラグインでテーブルのヘッダーをクリックしてソートをするのは見つけました。
しかし、私がやりたいのは新規行追加時から日付が降順になっているものです。

上記のサイトを見つけ、これでできるかと思ったのですが、
event.record[‘サブテーブルのフィールドID’].value.sort(compareRows);
の部分で
Uncaught TypeError: Cannot read properties of undefined (reading ‘value’)
というエラーが出てしまいました。

どなたかご教授いただければ幸いです。

実行したコード


(function() {
    'use strict';
  
    var events1 = [
      'app.record.detail.show',
      'app.record.create.show',
      'app.record.edit.show',
    ];
    kintone.events.on(events1, function(event) {

      var record = event.record;

      //対応日時、がサブテーブル内の日付フィールドです
      const compareRows = (rowA, rowB) => {
        const timeA = new Date(rowA.value['対応日時'].value).getTime();
        const timeB = new Date(rowB.value['対応日時'].value).getTime();
      
        return timeB - timeA;
      };

      record['対応日時'].value.sort(compareRows);

      return event;
    });
  })();
    
1 Like

テーブルのフィールドを指定すべきところに対応日時となっているからエラーになっているように思います。

しかし、私がやりたいのは新規行追加時から日付が降順になっているものです。

という動作には、イベントの指定の時点でそうはならないように思います。
今の指定では並び替えをするのは、編集画面だけです。

1 Like

aaa様 ありがとうございます。

テーブルのフィールドを指定すべきところに対応日時となっているからエラーになっているように思います。

その通りでした。間違いを見逃していました。ありがとうございます。

という動作には、イベントの指定の時点でそうはならないように思います。
今の指定では並び替えをするのは、編集画面だけです。

確かに編集画面のときにしか並び替えができないため、

'app.record.create.change.フローテーブル',
'app.record.edit.change.フローテーブル',

をevents1に追記しました。

これでサブテーブルに変化があったとき、とできました。
今まで日付フィールドを使っていたので、並び替え用に日時フィールドを追加しそちらをこのコードに当てはめたら追加時にも逆順にすることができました。

aaa様のお陰で解決することができました。
ありがとうございました。

1 Like

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。