chart = {
const svg = d3.create("svg")
.attr("viewBox", [0, 0, width, height])
.attr("width",500);
const linebox = svg.append("g");
const lines = linebox.selectAll(".lines")
.data(data)
.join("line")
.attr("x1",d => d.x1)
.attr("y1",d => d.y1)
.attr("x2",d => d.x2)
.attr("y2",d => d.y2)
.attr("class","lines")
.attr("stroke","#0789ad")
.attr("stroke-opacity",0)
function transition() {
lines.attr("transform", d => {
return `rotate(${0},${d.x1},${d.y1 + lineLength/2})`
})
lines.transition()
.duration(duration)
.delay(d => d.y1 * d.x1*0.008 + delay)
.attr("transform", d => {
return `rotate(${angle},${d.x1},${d.y1 + lineLength/2})`
})
.attrTween("stroke-opacity", function() {
return function(t) {
return Math.sin(t*Math.PI)
};
})
.call(endall, function() {
transition();
});
}
return svg.call(transition).node();
}