いつも大変お世話になっております。
以下の項目で、区分別の日数を集計したいですが
「総日数」は同じ日を除いて計算できるようになんとかできましたが
さらに「区分」で分けた際の集計となると全然さまよいまして
なにかアドバイスいただけると幸いです。
どうぞよろしくお願い致します。
(function () {
“use strict”;
kintone.events.on([“app.record.create.show”, “app.record.edit.show”,
“app.record.create.change.Table”, “app.record.edit.change.Table”,
“app.record.create.submit”, “app.record.edit.submit”,
“app.record.create.change.日付”, “app.record.edit.change.日付”, “app.record.index.edit.change.日付”,
“app.record.create.change.区分”, “app.record.edit.change.区分”,“app.record.index.edit.change.区分”,
“app.record.create.change.開始”, “app.record.edit.change.開始”,“app.record.index.edit.change.開始”,
“app.record.create.change.終了”, “app.record.edit.change.終了”,“app.record.index.edit.change.終了”,
“app.record.create.change.休憩”, “app.record.edit.change.休憩”, “app.record.index.edit.change.休憩”,
], function (event) {
var record = event.record;
var mwork = {
‘国内日数’: moment.duration(0),
‘アジア日数’: moment.duration(0),
‘アメリカ日数’: moment.duration(0),
};
var dailyWHours = {};//毎日
var table = record.Table.value;
table.forEach(function (row, index) {
var startTime = row.value.開始.value;
var endTime = row.value.終了.value;
var whours = moment.duration(row.value.終了.value).subtract(moment.duration(row.value.開始.value)).subtract(Number(row.value.休憩.value), ‘hours’);
if (whours.as(‘hours’) <= 0) {
row.value.終了.error = ‘開始 > 終了’;
} else { //whours.as(‘hours’) > 0
row.value.総時間.value = whours.as(‘hours’);
var dt1 = row.value.日付.value;
if (dt1) {
if (!dailyWHours.hasOwnProperty(dt1)) {//hasOwnProperty() メソッドは、オブジェクト自身が指定されたプロパティを持っているかどうかを示す真偽値を返します。
dailyWHours[dt1] = {
whours: whours.as(‘hours’),
table_index: index
};
} else {
dailyWHours[dt1].whours += whours.as(‘hours’);
dailyWHours[dt1].table_index = index;
}
}
var kubun = row.value.区分.value + ‘日数’;
if (mwork.hasOwnProperty(kubun)) {
// mwork[kubun] = mwork[kubun].add(whours);
mwork[kubun] = mwork[kubun].add(dailyWHours);
}
}
});
Object.keys(mwork).forEach(function (key) {//mwork 各合計類計算
// record[key].value = mwork[key].as(‘hours’);
record[key].value = mwork[key].as(dailyWHours);
});
record[‘総日数’].value = Object.keys(dailyWHours).length;//総日数計算
return event;
});
})();