withRanges = Array.from(grouped)
.map(d => {
let hours = d[1].map(v => {
return v.timestamp.getHours();
});
let hoursWithSet = new Set(hours);
let flatHours = [...hoursWithSet];
let outOfRangeHours = d[1]
.filter(d => {
return d.value >= maxGlucose;
})
.map(d => {
return d.timestamp.getHours();
});
let dataArrWithSet = new Set(outOfRangeHours);
let resultArr = [...dataArrWithSet];
let inRangeCount = 0;
let cumulative = d3.range(24).map(v => {
if (resultArr.includes(v) === false) {
inRangeCount += 1;
}
return { hour: v, inRangeCount: inRangeCount };
});
return {
day: d[0],
values: d[1],
outOfRangeHours: resultArr,
inRangeHours: flatHours.length - resultArr.length,
cumulative: cumulative,
totalHoursWithData: flatHours.length
};
})
.filter(d => {
return d.totalHoursWithData >= 12;
})