新規投稿
フォローする

経過年月の一覧表示について

こちらのコミュニティやサンプルなどを使用し、当日から基準日を引いた「何年何か月」を

求めることはできました。しかし一覧表示やCSVでの出力がされません。

コードの追加が必要でしょうか?教えていただければ幸いです。

 

/*
* 経過年数計算のサンプルプログラム
*/
jQuery.noConflict();
(function($) {
"use strict";

// ロケールを初期化
moment.locale('ja');

// 今日までの年月計算
function getYearMonth(dtDate) {

var dtToday = moment();
var dtFrom = moment(dtDate);
var years = 0;
var months = 0;

//入力日が過去日付の場合計算
if (!dtToday.isBefore(moment(dtFrom), 'day')) {
years = dtToday.diff(moment(dtFrom), 'years');
months = dtToday.diff(moment(dtFrom), 'months') % 12;
}
return years + "年 " + months + "ヶ月";
}

kintone.events.on("app.record.detail.show",function(event) {

var record = event.record; // 保存前の画面上のレコード

// 入社年月日
var emJoiningDate = kintone.app.record.getFieldElement('pointmonth');

if (emJoiningDate) {

var valJoiningDate = getYearMonth(record['pointday']['value']);

var emLabel = $("<label>");
var emDiv = $("<span>");

$(emJoiningDate).append($(emDiv));
$(emDiv).append($(emLabel));
$(emLabel).append(valJoiningDate);


}


});
})(jQuery);

 

0

9件のコメント

Avatar
Ryoji

ファインクラウド様

追加が必要です。
フィールドを追加したうえで保存時に値を設定すると、「ファイルに書き出す」を利用してCSVに出力した際に希望通りの結果になるはずです。
一覧表示についても追加したフィールドを表示してあげると良いと思います。

あとmoment.jsはメンテナンスモードになってしまったので、以下のリンク先を参考にLuxonに切り替えたほうが良いと思います。
Luxon を使って kintone の日付や日時フィールドのフォーマットをカスタマイズする

0
Avatar
ファインクラウド

ご返信いただきありがとうございます。

フィールド自体は文字列1行にてpointmonthというフィールドコードにて存在します。結果も書き出されております。
保存後に一覧を全てで確認しても該当フィールドが空欄になってしまいます。ここを表示するためにはどうしたら良いでしょうか?

0
Avatar
Ryoji

計算結果が表示されているだけで、フィールドに値が保存されていないように思えますが、
app.record.create.submitもしくはapp.record.edit.submitでpointmonthに値を設定されていますか

0
Avatar
ファインクラウド

保存時のイベントが必要ということですね。それは知りませんでした。

上記コードをどのように加えたらよいかご教授いただけませんでしょうか?

0
Avatar
Ryoji

動作確認はしていませんが、以下のようになります

kintone.events.on([“app.record.create.submit", “app.record.edit.submit”] ,function(event) {

var record = event.record; // 保存前の画面上のレコード

var valJoiningDate = getYearMonth(record['pointday']['value']);

record['pointmonth’]['value'] = valJoiningDate;

return event;

});

0
Avatar
ファインクラウド

御親切にありがとうございます。

初歩的で申し訳ございませんが、このコードを入れる場所を教えていいただけませんでしょうか。

0
Avatar
Ryoji

} )(jQuery)
の上です

一覧編集時にも値を設定したい時は、app.record.index.edit.submitも追加してください

0
Avatar
ファインクラウド

JSEDITで検証するとエラーになります。どこがおかしいでしょうか?

 

/*
* 経過年数計算のサンプルプログラム
*/
jQuery.noConflict();
(function($) {
"use strict";

// ロケールを初期化
moment.locale('ja');

// 今日までの年月計算
function getYearMonth(dtDate) {

var dtToday = moment();
var dtFrom = moment(dtDate);
var years = 0;
var months = 0;

//入力日が過去日付の場合計算
if (!dtToday.isBefore(moment(dtFrom), 'day')) {
years = dtToday.diff(moment(dtFrom), 'years');
months = dtToday.diff(moment(dtFrom), 'months') % 12;
}
return years + "年 " + months + "ヶ月";
}

kintone.events.on("app.record.detail.show",function(event) {

var record = event.record; // 保存前の画面上のレコード

// 入社年月日
var emJoiningDate = kintone.app.record.getFieldElement('pointmonth');

if (emJoiningDate) {

var valJoiningDate = getYearMonth(record['pointday']['value']);

var emLabel = $("<label>");
var emDiv = $("<span>");

$(emJoiningDate).append($(emDiv));
$(emDiv).append($(emLabel));
$(emLabel).append(valJoiningDate);


}


});

kintone.events.on([“app.record.create.submit", “app.record.edit.submit”,“app.record.index.edit.submit”] ,function(event) {

var record = event.record; // 保存前の画面上のレコード

var valJoiningDate = getYearMonth(record['pointday']['value']);

record['pointmonth’]['value'] = valJoiningDate;

return event;

});

})(jQuery);

0
Avatar
Ryoji
kintone.events.on(["app.record.create.submit", "app.record.edit.submit","app.record.index.edit.submit"] ,function(event) {
    var record = event.record; // 保存前の画面上のレコード
    var valJoiningDate = getYearMonth(record['pointday']['value']);
    record['pointmonth']['value'] = valJoiningDate;
    return event;
});


シングルクォーテーション、ダブルクォーテーションが全角になっている箇所がありました。
半角にしていただければ動作すると思います。
また、保存時にフィールドに値を設定するため、詳細画面表示時のイベントおよびjQueryの参照は不要です。

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