chart = {
const svg = d3.create("svg").attr("viewBox", [0, 0, width, height]);
let zupanije = svg
.selectAll('path')
.data(geojson.features)
.enter()
.append("path")
.attr("fill", "lightsteelblue")
.attr("stroke", "steelblue")
.attr("stroke-width", 1.4)
.attr("stroke-linejoin", "round")
.attr("d", d => {
return path(d);
});
let title = svg
.append('text')
.attr('x', centroid[0])
.attr('y', centroid[1])
.attr('text-anchor', 'middle')
.style('opacity', 0)
.text('Duljina kopnene granice [km]');
let transitions = [];
transitions.push(
svg
.selectAll('path')
.transition()
.delay(duration)
.duration(duration)
.attrTween('d', function(d, i) {
return flubber.toCircle(path(d), centroid[0], centroid[1], radius, {
maxSegmentLength: 0.2
});
})
.transition()
.duration(duration)
.attr('stroke-width', 40)
.transition()
.duration(duration)
.attr('fill', 'white')
.end()
);
title
.transition()
.duration(duration)
.delay(3 * duration)
.style('opacity', 1);
Promise.all(transitions).then(() => {
let pieChart = svg
.selectAll(".arc")
.data(arcs)
.join("path")
.attr("fill", d => color(d.data.name))
.attr("class", "arc")
.style('opacity', 0)
.attr("transform", d => `translate(${centroid[0]},${centroid[1]})`)
.attr("d", arc);
pieChart
.append("title")
.text(d => `${d.data.name}: ${d.data.value.toLocaleString()}`);
pieChart
.transition()
.duration(duration)
.style('opacity', 1)
.end('sad je');
let texts = svg
.append("g")
.attr("font-family", "sans-serif")
.attr("font-size", 16)
.attr("text-anchor", "middle")
.selectAll("text")
.data(arcs)
.join("text")
.style('opacity', 0)
.attr(
"transform",
d =>
`translate(${arc.centroid(d)[0] + centroid[0]}, ${arc.centroid(d)[1] +
centroid[1]})`
)
.call(text =>
text
.append("tspan")
.attr("y", "-0.4em")
.attr("font-weight", "bold")
.text(d => d.data.name)
)
.call(text =>
text
.append("tspan")
.attr("x", 0)
.attr("y", "0.7em")
.attr("fill-opacity", 0.7)
.text(d => `${d3.format('.0f')(d.data.value)}`)
)
.transition()
.duration(duration)
.style('opacity', 1);
});
return svg.node();
}