viewof EnterExitMergeJoin = {
let drawCirclesWithJoin = (containerId, dataArray) =>
{
let svg = d3.select(containerId);
let circles = svg.selectAll('circle').data(dataArray);
circles.join(
enter =>
{
enter.append('circle')
.attr('cx', (d, i) => i*100+50)
.attr('cy', 100)
.attr('stroke', 'firebrick')
.attr('stroke-width', d => d.borderWidth)
.attr('r', d => d.radius);
},
update =>
{
update.attr('fill','wheat');
},
exit => exit.remove()
);
}
let circleSizes = JSON.parse(JSON.stringify(initialCircleSizes));
drawCirclesWithJoin('#circle-list-container-4', circleSizes);
circleSizes.push({radius: 12, borderWidth: 4});
circleSizes.push({radius: 22, borderWidth: 2});
circleSizes.push({radius: 19, borderWidth: 6});
drawCirclesWithJoin('#circle-list-container-4', circleSizes);
return md`**Recreating using Join**`}