chart = {
const el = DOM.svg(width + margin.left + margin.right, height + margin.top + margin.bottom)
const svg = d3.select(el)
const clip = DOM.uid("clip");
svg.append("defs")
.append("clipPath")
.attr("id", clip.id)
.append("rect")
.attr("width", width)
.attr("height", height);
const focus = svg.append("g")
.attr("class", "focus")
.attr("transform", `translate(${margin.left},${margin.top})`);
const context = svg.append("g")
.attr("class", "context")
.attr("transform", `translate(${margin2.left},${margin2.top})`);
focus.append("path")
.datum(data)
.attr("clip-path", clip)
.attr("class", "area")
.attr("d", area)
.style("fill", "black");
focus.append("g")
.attr("class", "x axis")
.attr("transform", `translate(0,${height})`)
.call(xAxis);
focus.append("g")
.attr("class", "y axis")
.call(yAxis);
context.append("path")
.datum(data)
.attr("class", "area")
.attr("d", area2);
context.append("g")
.attr("class", "x axis")
.attr("transform", `translate(0,${height2})`)
.call(xAxis2);
context.append("g")
.attr("class", "x brush")
const tooltip = focus.append("g");
focus.on("touchmove mousemove", function(event) {
const {date, value} = bisect(d3.pointer(event, this)[0]);
tooltip
.attr("transform", `translate(${x(parseDate(date))},${y(value)})`)
.call(callout, `${(value)}
${parseDate(date)}`);
});
focus.on("touchend mouseleave", () => tooltip.call(callout, null));
return el;
}