paceGraphic = {
const width = 700, height =700;
const circuitWidth = 135, circuitHeight = 220;
const margin = {top:25, left:25};
const cols = Math.floor(width/circuitWidth);
const svg = d3.select(DOM.svg(width, height))
svg.append('g')
.attr('transform',`translate(${margin.left},${margin.top})`)
.selectAll('g.circuit')
.data(layoutData)
.enter()
.append('g')
.attr('class','circuit')
.attr('transform',(d,i)=>`translate(${i%cols * circuitWidth}, ${Math.floor(i/cols) * circuitHeight})`)
.call(parent=>{
parent.append('text')
.attr('font-size',14)
.attr('font-weight','bold')
.attr('font-family','Helvetica, sans-serif')
.text(d=>d.driver);
parent.append('text')
.attr('font-size',12)
.attr('font-style','italic')
.attr('font-family','Helvetica, sans-serif')
.text(d =>{
if(d.time.indexOf(':')>-1){
return `${d.time}`
}
return `+${d.time}s`
})
.attr('transform','translate(0,21)')
parent.append('path')
.attr('class','full-circuit')
.attr('d',circuitPath(circuit.circuitId, circuitWidth, circuitHeight))
.attr('fill','#fafafa')
.attr('stroke','#bbb');
const pathLength = parent.select('.full-circuit').node().getTotalLength()
parent.append('path')
.attr('class','circuit-overlay')
.attr('d',circuitPath(circuit.circuitId, circuitWidth, circuitHeight))
.attr('stroke','#F00')
.attr('stroke-width',2)
.attr('fill','none')
.attr('stroke-dasharray',
(d)=> `${d.proportion * pathLength} ${pathLength - (d.proportion * pathLength)}`)
});
return svg.node();
}