function waterLevelTimeCurve(isoStart, isoEnd) {
let scale = d3.scaleTime().domain([isoStart, isoEnd]).range([0, 1])
return function curve(t) {
let d = scale.invert(t);
let results = waterLevel.filter(x => fmtDt(x.datetime) === fmtDt(d))
if (results.length === 1) {
return results[0].waterLvlPct
}
results = waterLevel.concat([{datetime: d}])
results = results.sort((a, b) => d3.ascending(a.datetime, b.datetime))
let idx = results.findIndex(x => fmtDt(x.datetime) === fmtDt(d))
return (results[idx - 1].waterLvlPct + results[idx + 1].waterLvlPct) / 2
}
}