updateGraph = {
let existingElements =
d3.select('#svgGeneralUpdatePattern')
.select('#symbols')
.selectAll('#symbol')
.data(myData, (d) => d)
let newElements = existingElements.enter()
let unusedElements = existingElements.exit()
if (newElements.size() > 0) {
existingElements
.transition(quickTransition)
.attr('transform', (d,i) => `translate(${i*30}, 0)`)
} else if (unusedElements.size() > 0) {
existingElements
.transition(quickTransition)
.delay(750)
.attr('transform', (d,i) => `translate(${i*30}, 0)`)
}
newElements
.append('g')
.attr('id', 'symbol')
.attr('transform', (d,i) => `translate(${i*30}, -100)`)
.each(addCircleAndText)
.transition()
.delay(250)
.duration(750)
.ease(d3.easeBounce)
.attr('transform', (d,i) => `translate(${i*30}, 0)`)
.selectAll('circle')
.transition()
.duration(500)
.ease(d3.easeLinear)
.style('fill', 'orange')
unusedElements
.selectAll('circle')
.transition()
.duration(500)
.ease(d3.easeLinear)
.style('fill', 'Crimson')
unusedElements
.transition()
.delay(500)
.duration(1000)
.ease(d3.easeBounce)
.attr('transform', (d,i)=> `translate(${i*30}, 100)`)
.remove()
}