workRectangles = g => g
.selectAll('rect')
.data(filteredData)
.join(
enter => enter.append("rect")
.attr("fill", "#3490DC")
.attr('fill-opacity', 0.8)
.attr('data-start', d => d.beginning_datetime)
.attr('data-end', d => d.end_datetime)
.attr('y', d => {
let hour = parseInt(new Date(d.beginning_datetime).getUTCHours());
let minute = parseInt(new Date(d.beginning_datetime).getUTCMinutes());
if (hour == 0) {
yScale(23 * 60 + minute);
}
return yScale(hour * 60 + minute);
})
.attr('x', d => {
return xScale(moment(d.beginning_datetime).format('dd'));
})
.attr('height', d => {
let hourStart = parseInt(new Date(d.beginning_datetime).getUTCHours());
let minuteStart = parseInt(new Date(d.beginning_datetime).getUTCMinutes());
let hourEnd = parseInt(new Date(d.end_datetime).getUTCHours());
let minuteEnd = parseInt(new Date(d.end_datetime).getUTCMinutes());
return (yScale(hourEnd * 60 + minuteEnd)) -
(yScale(hourStart * 60 + minuteStart));
})
.attr('width', xScale.bandwidth() - 5)
.call(enter => enter.transition(t)
.attr('fill-opacity', 0.8)),
exit => exit
.call(exit => exit.transition(t)
.attr('fill-opacity', 0)
.remove())
);