biglinechart = {
const svg = d3
.create("svg")
.attr("viewBox", [-80, -40, width + 80, height + 100]);
svg.node().update = game => {
svg.selectAll("*").remove();
const gx = svg
.append("g")
.call(linexAxis)
.attr("transform", `translate(0, ${height - margin.bottom})`);
const line_x = d3
.scaleTime()
.domain([
d3.min(summedLineData.map(d => formatutc(d[0]))),
d3.max(summedLineData.map(d => formatutc(d[0])))
])
.range([margin.left, width - margin.right]);
const line_y = d3
.scaleBand()
.domain(summedLineData.map(d => d[game]))
.range([margin.top, height - margin.bottom])
.padding(0.1)
.round(true);
const lineyAxis = (g, scale = line_y) =>
g
.attr("transform", `translate(${margin.left},0)`)
.call(d3.axisLeft(scale).ticks(height));
const gy = svg.append("g").call(lineyAxis);
const line = d3
.line()
.defined(d => !isNaN(d[game]))
.x(d => line_x(d[0]))
.y(d => line_y(d[game]));
svg
.append("path")
.datum(summedLineData)
.attr("fill", "none")
.attr("stroke", "steelblue")
.attr("stroke-width", 0.5)
.attr("stroke-linejoin", "round")
.attr("stroke-linecap", "round")
.attr("d", line);
};
return svg.node();
}