drag = {
function dragstarted(e) {
console.log(e);
d3.select(chart).selectAll("#brush-area").remove();
const theta = Math.PI - Math.atan2(...d3.pointer(e));
set(viewof Theta, theta);
set(viewof brushStart, x.invert(theta));
}
function dragged(e) {
const theta = Math.PI - Math.atan2(...d3.pointer(e));
set(viewof Theta, theta);
set(viewof brushStop, x.invert(theta));
d3.select(chart).selectAll("#brush-area")
.data([Array(100).fill(1).map( (d, i) => i * (x.invert(theta) - brushStart) / 100 + brushStart)])
.join("path")
.attr("d", d => brushArea(d))
.attr("fill", "grey")
.attr("stroke", "black")
.attr("opacity", 0.5)
.attr("id", "brush-area");
}
function dragended(e) {
console.log(e);
const theta = Math.PI - Math.atan2(...d3.pointer(e));
set(viewof Theta, theta);
set(viewof brushStop, x.invert(theta));
d3.select(chart).selectAll("#brush-area")
.data([Array(100).fill(1).map( (d, i) => i * (x.invert(theta) - brushStart) / 100 + brushStart)])
.join("path")
.attr("d", d => brushArea(d))
.attr("fill", "grey")
.attr("stroke", "black")
.attr("opacity", 0.5)
.attr("id", "brush-area");
}
return d3.drag()
.on("start", dragstarted)
.on("drag", dragged)
.on("end", dragended);
}