🐊
[kintoneカスタマイズ] 期日の経過日数を表示させる
目的
期日までの残り日数を管理したい。
要件
- 期日を設定する日付フィールドを設ける
- 当日から残日数を算出する
実装
期日を変更した際、各表示イベントで期日と現在日時を比較し、経過日時を日数で算出する。
日付処理にはCybozu CDNのLuxonライブラリを使用するため、kintoneのカスタマイズファイルに下記を指定する。
コード
kintone.js
/**
* 残日数の計算
*/
(function() {
"use strict";
/**
* 経過年月日を計算する
*/
const SetDuration = function(event) {
// ① 期日を取得
const dayValue = event.record['期日'].value;
if(dayValue){
const date = luxon.DateTime.fromISO(dayValue).startOf('day');
// ② 現在日時を取得
const currentDate = luxon.DateTime.local().startOf('day');
// ③ 経過期間を計算する
const duration = currentDate.diff(date, ['days']);
// ④ 経過期間を日数で取得
event.record['残日数'].value = duration.toObject().days;
}
return event;
};
kintone.events.on([
'app.record.create.change.期日',
'app.record.edit.change.期日',
'app.record.create.show',
'app.record.edit.show',
'app.record.detail.show'
], SetDuration);
})();
Discussion