yearSeries = {
function getYear(d) {
return `${new Date(d).getFullYear()}`;
}
function getMonth(d) {
return `${new Date(d).getMonth() + 1}`;
}
const years = d3
.groups(
blocksWithLove,
d => getYear(d.createdAt),
d => getMonth(d.createdAt)
)
.filter(d => d[0] >= 2010);
const oYears = {};
years.forEach(y => {
const oY = (oYears[y[0]] = {
year: y[0]
});
y[1].forEach(yData => {
yData[2] = yData[1].length;
});
const aMonths = [];
oY.values = y[1].map(ym => {
aMonths.push(+ym[0]);
return {
year: oY.year,
ym: +ym[0],
date: new Date(`${oY.year}-${ym[0]}-01`),
month: +ym[0],
count: ym[2],
blocks: ym[1]
};
});
d3.difference(d3.range(1, 13), aMonths).forEach(m => {
oY.values.push({
year: oY.year,
ym: m,
date: new Date(`${oY.year}-${m}-01`),
month: m,
count: 0
});
});
oY.values.sort((a, b) => {
return d3.ascending(+a.ym, +b.ym);
});
oY.maxCount = d3.max(y[1], m => m[1].length);
oY.sumCount = d3.sum(y[1], m => m[1].length);
});
return Object.values(oYears).sort((a, b) => d3.ascending(+a.year, +b.year));
}