annotatedStateData = selectedStateData
.map((d, i, arr) => ({
date: d.date,
newCases: d['actuals.newCases'],
newDeaths: d['actuals.newDeaths'],
newCasesSmooth: blurredCases[i],
newDeathsSmooth: blurredDeaths[i],
casePeak: blurredCases[i - 1] < blurredCases[i] && blurredCases[i + 1] < blurredCases[i],
deathPeak: blurredDeaths[i - 1] < blurredDeaths[i] && blurredDeaths[i + 1] < blurredDeaths[i],
caseValley: blurredCases[i - 1] > blurredCases[i] && blurredCases[i + 1] > blurredCases[i],
deathValley: blurredDeaths[i - 1] > blurredDeaths[i] && blurredDeaths[i + 1] > blurredDeaths[i],
vaccinesInitiatedRatio: d['metrics.vaccinationsInitiatedRatio'],
vaccinesCompletedRatio: d['metrics.vaccinationsCompletedRatio'],
}))
.map((d, i, arr) => ({
...d,
nextDeathPeakIdx: (
arr.slice(i).findIndex(d => d.deathPeak) !== -1 ?
i + arr.slice(i).findIndex(d => d.deathPeak) :
null
),
nextDeathValleyIdx: (
arr.slice(i).findIndex(d => d.deathValley) !== -1 ?
i + arr.slice(i).findIndex(d => d.deathValley) :
null
)
}))
.map((d, i, arr) => ({
...d,
nextDeathPeak: (
d.nextDeathPeakIdx ?
arr[d.nextDeathPeakIdx].date :
null
),
nextDeathValley: (
d.nextDeathValleyIdx ?
arr[d.nextDeathValleyIdx].date :
null
)
}))
.map((d, i, arr) => ({
...d,
daysTillNextDeathPeak: (
d.nextDeathPeak ?
d3.timeDay.range(d.date, d.nextDeathPeak).length :
null
),
daysTillNextDeathValley: (
d.nextDeathValley ?
d3.timeDay.range(d.date, d.nextDeathValley).length :
null
)
}))